【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
来源:互联网 发布:java 多泛型参数 编辑:程序博客网 时间:2024/05/21 18:41
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
参考:
https://github.com/kamyu104/LeetCode/blob/master/Python/construct-binary-tree-from-inorder-and-postorder-traversal.py
这个代码会有 memory limited exceed 的错误
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def buildTree(self, inorder, postorder): """ :type inorder: List[int] :type postorder: List[int] :rtype: TreeNode """ length=len(postorder) if length==0: return None if length==1: return TreeNode(postorder[length-1]) root=TreeNode(postorder[length-1]) #LRN的最后一个点就是root #找到root #place=where(inorder==root) place=inorder.index(postorder[length-1]) #在LNR里找到root的位置 #length2=len(rightinorder) #不需要这一步,因为inorder的place的左边 和 postorder的place的左边 正好是左子树的LNR和LRN,长度是一样的 leftinorder=inorder[0:place] #分别是左子树的inorder和postorder leftpostorder=postorder[0:place] rightinorder=inorder[place+1:len(inorder)] #分别是右子树的inorder和postorder rightpostorder=postorder[place:length-1] root.right=self.buildTree(rightinorder,rightpostorder) #递归左右child root.left=self.buildTree(leftinorder,leftpostorder) return root
下面这个还没搞懂 是哪里的区别呢
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # @param inorder, a list of integers # @param postorder, a list of integers # @return a tree node def buildTree(self, inorder, postorder): lookup = {} for i, num in enumerate(inorder): lookup[num] = i return self.buildTreeRecu(lookup, postorder, inorder, len(postorder), 0, len(inorder)) def buildTreeRecu(self, lookup, postorder, inorder, post_end, in_start, in_end): if in_start == in_end: return None node = TreeNode(postorder[post_end - 1]) i = lookup[postorder[post_end - 1]] node.left = self.buildTreeRecu(lookup, postorder, inorder, post_end - 1 - (in_end - i - 1), in_start, i) node.right = self.buildTreeRecu(lookup, postorder, inorder, post_end - 1, i + 1, in_end) return node
0 0
- LeetCode 106: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode(106)Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal [106]
- LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode 106] Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode 106]Construct Binary Tree from Inorder and Postorder Traversal
- leetcode || 106、Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal - LeetCode 106
- LeetCode 106:Construct Binary Tree from Postorder and Inorder Traversal
- LeetCode---(106)Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode #106 Construct Binary Tree from Inorder and Postorder Traversal
- leetcode 106: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106: Construct Binary Tree from Inorder and Postorder Traversal
- 【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal
- 【leetcode】【106】Construct Binary Tree from Inorder and Postorder Traversal
- 微信支付配置信息动态获取数据库获取
- awk 手册
- Android学习--ProgressBar进度条的使用
- Extjs控件属性
- betterystats.bin 是干什么用的
- 【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
- 一. AWK入门指南
- 汇编和C实现 Hello, world! 之比较
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- 偶然得到的一张设计流程图
- 装饰者模式(C++)
- linux awk 内置函数详细介绍(实例)
- 关于Tomcat服务器中使用jsp找不到图片存放路径的问题
- Eclipse取消设置项目默认空间