今天大部分都是围绕前中后序遍历二叉树来学习的
144.二叉树的前序遍历 (opens new window)94.二叉树的中序遍历 (opens new window)
145.二叉树的后序遍历 (opens new window)
1.递归思想进行遍历
只要放入中间值之后分别左右就是前序,通过调整顺序可以得到中序和后序
2.不使用递归,通过迭代实现
前序
这里用到了stack,在push完root进stack之后 先让node = st.top()
也就是中序的中,之后就可以把它从stack中pop掉了
把中的值放入result之后,由于使用了stack 晚进早出
所以要先push right再push left 这样构建出中左右
中序
首先先把cur走left分支,一直走到没有之后的分支为止
用st.top记录这个值,并把这个从st中pop掉
记录这个值 由于是最下层没有right
所以pop后看到的是上层的left 也就是当前的mid
放入后再看right 以此类推
后序
跟前序相似,但有所调整
首先跟中左右差不多 修改一下得到中右左
中右左reverse后刚好是左右中 也就得到了后序
3.统一迭代法
其实就是调整顺序去实现,每次放入中节点后,在放入NULL用来做标记 放入NULL pop后的值
4.层序遍历
首先记录size也就是层数
for loop这个层数每层根据顺序放入也就是从左到右