先序、中序、后序的非递归实现
先序
存在以下规则:
- 弹出栈就输出该弹出的值。
-
后序
弹出打印
- 如果有左节点,压入左,如果有右节点,压入右
- 使用一个辅助栈收到打印的内容
-
中序(左节点-根节点-右节点)
整条左边界依次入栈
- 步骤 1 无法继续,弹出节点并打印,然后将节点的右树继续执行步骤 1。
思想:
- 整棵树是可以被左边界的节点分解掉。


使用一个指针 h 追踪上次打印的节点,当 h 指向左节点,说明父节点需要处理右子树了,如果 h 指向右节点,说明父节点已经处理完毕,
弹出即打印。
按层遍历
- 队列
- 通过设置 flag 变量的方式来判断某一层是否应该结束遍历
- 暴力算法:遍历
- 父子关系

中序遍历:左中右,
当节点是整棵树的右节点时它没有后继节点。
前提是中序遍历。


动态规划:用空间换时间

