由中根和后根遍历序列构造二叉树(同理中根与先根) —— LC

目录

一、由中根和后根遍历序列构造二叉树(同理中根与先根)

二、解题方法

1.根节点

2.根节点A的左右子树

(A1)A的左子树

(A1B1)B的左子树

 (A1B2)B的右子树

(A1B2E2)E的右子树

(A2)A的右子树

(A2I1)I的左子树

(A2I1J1)(A2I1J1K1)(A2I1J1K1L1)(A2I1J1K2)(A2I1J1K2P2)(A2I1J1K2P2Q2)

3.结果

三、总结思路

1.递归(找根,分子树,构建新树)


一、由中根和后根遍历序列构造二叉树(同理中根与先根)

中根次序遍历序列:(先左后根再右)

C D B E G F H A N M O L K P Q S R J I T

后根次序遍历序列:(先左后右再根)

D C G H F E B N O M L S R Q P K J T I A

二、解题方法

1.根节点

由后根的末尾确定:A为根节点。

f935f165915242f593233aa4e8f93d93.png

2.根节点A的左右子树

由中根确定A前为A的左子树:CDBEGFH,A后为A的右子树:NMOLKPQSRJIT。

(A1)A的左子树

对A左子树的七个节点在后根中顺序末尾得B为A左子树的树根(即B的左节点),则对应中根B前为B的左子树:C D,B后为B的右子树:EGFH。

558973b161024ab9a9041b723e291e56.png

(A1B1)B的左子树

由后根中CD两节点次序确定C为B左子树的根(即B的左节点),又因中根中D在C后,则D为C的右节点。

f91318b59726470886251dffc3f6d675.png

 (A1B2)B的右子树

由后根中GHFE节点次序确定E为B右子树的根(即B的右节点),再由中根确定E后为E的右子树:GFH。

5eec19147d3e40a6a3dff7c4a2c068dd.png

(A1B2E2)E的右子树

由后根中GHF节点次序确定F为E右子树的根(即E的右节点),再由中根确定F后为F的左节点:G,F前为F的右节点H。

b738659d5db949c78510f4c56f4486c4.png

(A2)A的右子树

对A右子树后根次序中末尾得I为A右子树的根,再由中根确定I后为I的右节点:T,I前为I的左子树:NMOLKPQSRJ。

(A2I1)I的左子树

对I左子树后根次序中末尾得J为I左子树的根,再由中根确定J前为J的左子树:NMOLKPQSR。

... ...

(A2I1J1)(A2I1J1K1)(A2I1J1K1L1)(A2I1J1K2)(A2I1J1K2P2)(A2I1J1K2P2Q2)

注:此处字母为节点,1为左子树(节点),2为右子树(节点),例如A2I1J1K2P2Q2表示从A的右子树一直推断到Q的右子树。

3.结果

75c7bf0b34bb44508510ec8738e97b11.png

三、总结思路

1.递归(找根,分子树,构建新树)

采用递归思想,不断从后根次序中找根节点,再依据中根次序中根节点的前后部分找出左右子树,再将左右子树作为新的树,从新的树的后根次序中找子树的根节点,再分新的左右子树,依次类推。(可用代码实现,有空了再写^_^)


2022.11.07-08

初稿

  • 26
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值