版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0
二叉树的遍历
二叉树的先序、中序、后序说的都是根相对的位置来说的。
- 先序(先根):根-左-右
- 中序(中根):左-根-右
- 后序(后根):左-右-根
比如,有如下二叉树:
1 | 1 |
则我们可以知道
- 先序:preorder = [1,2,4,3,5]
- 中序:inorder = [2,4,1,3,5]
- 后序:postorder = [4,2,5,3,1]
下面介绍的是后序遍历算法,分别使用递归和非递归方法。
递归方法
算法首先遍历左子树,然后遍历右子树,最后是根节点。
1 | // C++ |
非递归方法
可以用栈或 Morris 遍历
1. 栈
1 | // C++ |
2. Morris
1 | // C++ |
较复杂,可以参考 Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)- cnblogs
END.