第十四天 二叉树part01
二叉树的递归遍历:前序LC144、中序LC94、后序LC145
迭代法遍历(非递归法)
-
前序LC144
-
中序LC94(未掌握)
- 未掌握分析:有些细节方面遗忘了
- 思路:先使用栈记录一路向左的节点,然后不断取出对应的左节点(左和中的处理都包含在左中),如果左节点有右子树,则找到右子树的一路向左节点,不断循环即可
-
后序LC145(超时1min)
- 更简单的版本:先序遍历是中左右,后续遍历是左右中,那么我们只需要让先序遍历的代码顺序变成中右左的遍历顺序,然后再反转result列表
- 反转链表操作:Collections.reverse()
统一法迭代
使用栈来替代递归处理二叉树的遍历中,中序遍历无法使用栈的原因是无法同时解决访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况
解决方法:将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记(要处理的节点放入栈之后,紧接着放入一个空指针作为标记。)