2018年3月9日

二叉树遍历之三(Moriis traversal)

摘要:  二叉树的Morris traversal是个很值得学习的算法,也是此系列重点想要记叙的一个算法。Morris traversal的一个亮点在于它是O(1)空间复杂度的。前面的递归和迭代都是需要O(n)空间复杂度的。那么这个O(1)空间复杂度怎样做到?这个借鉴了些线索二叉树的相关原理,Mo 阅读全文
posted @ 2018-03-09 19:32 禾杉 阅读(365) 评论(0) 推荐(0)
2018年3月6日

二叉树遍历系列之二(迭代遍历)

摘要: 本篇讲的是利用一个栈,进行二叉树的非递归遍历。很容易想到,递归是利用了系统的栈,而非递归也是用栈的数据结构对我们而言更方便。 1. 前序遍历 相较而言,前序遍历的非递归遍历算法还是很直观的。考虑到每个节点都是先自己,再左孩子,右孩子这样的访问顺序进行遍历。不难看出,每个节点其实只用访问一次就可以了, 阅读全文
posted @ 2018-03-06 23:53 禾杉 阅读(292) 评论(0) 推荐(0)

二叉树遍历系列之一(递归遍历)

摘要: 因递归遍历比较简单,也不是本系列的重点。三种形式遍历的递归代码十分相似,此处不再赘述过程,直接po代码了。 (以下代码均已leetcode上的problem为框架编写,经测试可通过leetcode test) 1.前序遍历 2.中序遍历 3.后序遍历 阅读全文
posted @ 2018-03-06 18:51 禾杉 阅读(165) 评论(0) 推荐(0)