已知二叉树的后序遍历和中序遍历求前序遍历(二叉树)
来源:互联网 发布:苹果电脑mac地址 编辑:程序博客网 时间:2024/05/01 16:46
已知后序遍历和中序遍历重建二叉树和已知前序遍历和中序遍历求后序遍历的时候已经说明思路,这里直接贴代码
# -*- coding:utf-8 -*- class Solution(object):def reConstructBinaryTree(self, post, mid):if len(post) == 0 or len(mid) == 0:return None# 把头结点放入列表中li = [post[-1],]# 在中序遍历中找到根节点的位置i = mid.index(post[-1])# 遍历左子树root_left = self.reConstructBinaryTree(post[0 : i], mid[0 : i])# 遍历右子树root_right = self.reConstructBinaryTree(post[i : -1], mid[i + 1 : ])# 把所得到的结点连接,把返回结果为空的情况剔除if root_left is not None and root_right is not None:# 注意这两个值的连接顺序(和已知前序和中序相反)li.extend(root_left)li.extend(root_right)elif root_left is not None:li.extend(root_left)elif root_right is not None:li.extend(root_right)return liif __name__ == "__main__":a = Solution()post_order = [7, 4, 2, 5, 8, 6, 3, 1] # 后序遍历mid_order = [4, 7, 2, 1, 5, 3, 8, 6] # 中序遍历print a.reConstructBinaryTree(post_order, mid_order)
0 0
- 已知二叉树的后序遍历和中序遍历求前序遍历(二叉树)
- 已知二叉树的中序遍历和后序遍历,如何求前序遍历
- 已知二叉树的中序遍历和后序遍历,如何求前序遍历
- 二叉树遍历问题:已知中序遍历和后序遍历结果,求前序遍历结果
- 已知二叉树的后序遍历和中序遍历重建二叉树(二叉树)
- 已知二叉树的中序遍历和后序遍历,求先序遍历
- 二叉树遍历:已知中序和后序,求前序
- 【树】已知二叉树前序和中序遍历求后序遍历,及中序和后序遍历求前序遍历
- 已知二叉树的后序/前序遍历和中序遍历,求前序/中序遍历
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 已知二叉树的前序遍历和中序遍历,求二叉树的后序遍历
- 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历(二叉树)
- 二叉树系列:已知二叉树的中序遍历和前序遍历,求后序遍历
- 二叉树遍历---已知前序遍历和中序遍历求其后序
- 二叉树已知先序遍历和中序遍历得到后序遍历
- 已知二叉树的前序遍历和中序遍历重建二叉树(二叉树)
- 已知二叉树后序遍历和中序遍历,求前序遍历
- Light OJ 1125 Divisible Group Sums 背包DP 2017/1/23
- tomcat8配置https ARP方式
- 【c++】继承
- 链表List的代码,但是缺少保护
- 在VS2015中使用SDL2.0
- 已知二叉树的后序遍历和中序遍历求前序遍历(二叉树)
- 安卓逆向系列教程 4.1 字符串资源
- 洛谷P1316 丢瓶盖
- 面向对象
- Tips for preparing input data in caffe
- LeetCode——19. Remove Nth Node From End of List
- JS实现轮播图
- poj 2838 Cow Sorting 树状数组 两种思路
- wamp出现You don’t have permission to access/on this server提示