二叉树的还原

根据先序和中序,或中序和后序遍历的结果,可以还原二叉树结构。关键步骤包括:确定根节点,根据中序划分左右子树,并依据先序或后序确定子节点。例如,先序为1,2,4,5,10,11,3,6,7,中序为4,2,10,5,11,1,6,3,7,通过此方法可以逐步构建二叉树。" 104183606,8308812,《代码大全2》读书笔记:软件构建中的设计原则与实践,"['编程实践', '软件设计', '代码质量', '设计模式', '面向对象']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过先序和中序,或者中序和后序的结果,可以还原一颗二叉树。中序为必要的,先序和后序有一个即可。


步骤为:

(1)确定根结点:先序第一个,或后序最后一个为根结点;

(2)确定左右子树:在中序的根节点左边的为左子树序列,右边的为右子树序列;

(3)确定左右子树中的孩子结点:其孩子为先序中先出现的,或后序中后出现的;

循环(2)(3)即可完成。


先序为:1,2,4,5,10,11,3,6,7

中序为:4,2,10,5,11,1,6,3,7


图示还原过程

第一步,先序的第一个,即1为根节点,在中序的1左边为左子树,右边为右子树,且左子树中的2在先序中先出现,为1的左孩子,右子树中的3在先序中先出现,为1的右孩子。


第二步,对于2,4为其左子树(即左孩子),10、5、11为其右子树,其中5在先序中先出现,为2的右孩子。

第三步,对于5,10为其左子树(左孩子),11为其右子树(右孩子)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值