二叉树遍历

前序遍历: 根节点 --> 左节点 --> 右节点

中序遍历: 左节点 --> 根节点 --> 右节点 

后序遍历: 左节点 --> 右节点 --> 根节点

 

已知一棵二叉树的中序遍历为: c, b, d, e, a, g, i, h, j, f;     后序遍历为:c, e, d, b, i, j, h, g, f, a; 求该二叉树的前序遍历?

思路:

1. 由于后序遍历是最后才访问根节点的,所以可知 节点a 为该二叉树的根节点。

2. 由于中序遍历是先遍历左子树,然后遍历根节点,最后遍历右子树,由此可以推断 c, b, d, e 为根节点的左子树, g, i, h, j, f为根节点的右子树。

3. 中序 c,b,d,e;  后序 c, e, d, b; 由后序遍历的特点可以推断出, b 为根节点 a 的左子树。中序遍历,根后序遍历都是先从左节点开始遍历的,所以可以推断 c为该二叉树的左叶子节点。如(图1)

 

 4. 中序(左->根->右): d, e;   后序(左->右->根): e, d;  可以推断 d 为 e 的根节点,e为d的右子树。 于是图1中的“?”为节点 d, 该二叉树的左子树如 (图2)

 

5. 分析根节点a的右子树。 中序:g, i, h, j, f;  后序:i, j, h, g, f; 根据后序遍历的特点可以推断出 f 是根节点 a 的右子树; 根据中序遍历可以推断出 节点f 只有左子树,没有右子树。 如(图3)

 

6. 根据后序遍历的特点:左,右,根; 由于节点f没有右子树,那么可以推断 节点g 为 节点f 的左子树,于是(图3)中的“?”为 节点g。

同时根据中序遍历的特点:左,根,右;可以推断 节点g 没有左子树,只有右子树。 如(图4)

 

7. 中序:g, i, h, j, f;   后序: i, j, h, g, f; 此时还剩3个节点 i, h, j (中序,左->根->右),  i, j, h (后序,左->右->根);  于是可以推断 节点h 是 节点i 和 节点j 的根节点, 同时 节点i 是 节点h 的左节点, 节点j 是 节点h 的右节点。 于是(图4)中的 “?” 为 节点h。 完整的二叉树如(图5)

 

 

8. 该二叉树的前序遍历(根->左->右)为: a, b, c, d, e, f, g, h, i, j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值