用一棵二叉树的前序遍历结果和中序遍历结果还原这棵二叉树——6

根据二叉树的前序遍历{1,2,4,7,3,5,6,8}和中序遍历{4,7,2,1,5,3,8,6},通过分析重建二叉树的过程,并利用递归实现。检查重建后的树的先序遍历与给定前序遍历序列一致,确认重建成功。" 130026974,18148785,Python h5py库:入门指南与使用示例,"['python', '数据存储', 'hdf5', 'numpy', '机器学习']
摘要由CSDN通过智能技术生成

    输入某二叉树的前序遍历和中序遍历的结果,重建出这棵二叉树,假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出这棵满足前序遍历和中序遍历的二叉树并输出它的头结点。

    对一棵二叉树前序遍历的顺序是“根结点->左结点->右结点”,而中序遍历的顺序是“左结点->根节点->右结点”,因此,一般的思路都是酱紫的:

  1. 前序遍历列表中,第一个数据肯定是根节点,而中序遍历列表中,第一个数据肯定是树的最左结点,这样就可以得知,在前序遍历中,从根结点到最左结点一定是树的最左分支,也就是“1->2->4”;

  2. 接下来,在中序遍历中,访问完最左结点4之后因为其左结点为NULL要访问的就是4的右分支的最左结点了,为7,而在前序遍历中访问到最左结点之后就要访问右结点,发现也为7,说明7就是最左结点4的右分支上的最左结点,也就是只有7一个右结点;

  3. 然后,在中序遍历中访问完最左结点也就是以4为根节点子树之后,就要回到4结点的父节点了,也就是2,再往下访问是根节点1,也就是2并没有右结点;

  4. 至此会发现1为根节点的左子树已经全部访问完了;

 

    上面没有再继续往下分析,是因为会发现,上面说的一堆虽然能把树给重建出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值