版权声明:自由转载-非商用-非衍生-保持署名 | 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]
算法
算法首先利用先序遍历序列构造“跟”节点,然后依据中序遍历序列来构造左右子树。就拿上面二叉树举例,算法流程如下:
- 根节点(root)是先序序列中的第一个节点preorder[0] = 1;
- 在inorder 中找到值等于1 的点,然后将inorder 分为左右两块,即[2,4] 和[3,5]
- 利用两块[2,4] 和[3,5] 分别用来构造根节点1 的左右子树。
- 递归产生各子树
C++代码如下(仅供参考):
1 | /** |
END.