Python从前序与中序遍历序列构造二叉树

这篇博客介绍了如何利用Python根据给定的前序遍历和中序遍历序列来构建二叉树。通过一个具体的例子展示了如何将序列转换为如下的二叉树结构:3 / 9 20 / 15 7。这个过程涉及到了二叉树的数据结构和递归算法的应用。
摘要由CSDN通过智能技术生成

根据一棵树的前序遍历与中序遍历构造二叉树。

注意:
你可以假设树中没有重复的元素。

例如,给出

前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:

    3
   / \
  9  20
    /  \
   15   7
链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xoei3r/
来源:力扣(LeetCode)
 


# 和上面的根据中序、后序序列构建二叉树类似,只是root的生成位置由后序最后一个元素改为前序第一个元素;
# 暴躁老哥在线刷题 思路:
# 首先根据前序遍历的定义可以知道,preorder这个数组的第一个元素preorder[0]一定是root,
# 再根据中序遍历的定义, 在inorder这个数组里,root前面的元素都属于root的左子树,root后面的元素都属于右子树,
# 从这一步得到了left_inorder和right_inorder,
# 接下来我们只需要把root在inorder里的位置index = inorder.index(preorder[0])查找出来,就可以知道其左子树和右子树的长度,
# 然后再回到preorder,root后面先是左子树,然后是右子树,因为上一步我们已经知道了它们的长度,所以可以得到left_preorder和left_preorder,
# 然后递归不就完事了。
# ————————————————
# 版权声明&#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值