[Leetcode] Construct Binary Tree from Inorder and Postorder/Preorder and Inorder Traversal
来源:互联网 发布:如何检查windows更新 编辑:程序博客网 时间:2024/05/17 20:33
Given inorder and postorder/preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
思路:用递归的思想,inorder是先左,中,右,而postorder是左,右, 中。因而每次递归返回当前子树的root,root就是postorder的最后一个,然后再寻找当前子树的左子树和右子树的根作为root的左右child,在此过程中寻找inorder list和postorder list中对应的左子树和右子树。
如果是preorder和inorder, 思路完全一样,注意递归时候参数的传递
inorder and postorder:
# Definition for a binary tree node# 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 createTree(self, inorder, postorder, li, ri, lp, rp): if li > ri or lp > rp: return None else: root = TreeNode(postorder[rp]) i = li while inorder[i] != postorder[rp]: i += 1 root.left = self.createTree(inorder, postorder, li, i-1, lp, lp+i-1-li) root.right = self.createTree(inorder, postorder, i+1, ri, lp+i-li, rp-1) return root def buildTree(self, inorder, postorder): return self.createTree(inorder, postorder, 0, len(inorder) - 1, 0, len(postorder) - 1)
preorder and inorder:
# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # @param preorder, a list of integers # @param inorder, a list of integers # @return a tree node def createTree(self, preorder, inorder, lp, rp, li, ri): if lp > rp or li > ri: return None else: root = TreeNode(preorder[lp]) i = li while inorder[i] != preorder[lp]: i += 1 root.left = self.createTree(preorder, inorder, lp+1, lp+i-1-li+1, li, i-1) root.right = self.createTree(preorder, inorder, lp+i-1-li+2, rp, i+1, ri) return root def buildTree(self, preorder, inorder): return self.createTree(preorder, inorder, 0, len(preorder)-1, 0, len(inorder)-1)
0 0
- 【Leetcode】Construct Binary Tree From Inorder and Preorder/Postorder Traversal
- [Leetcode] Construct Binary Tree from Inorder and Postorder/Preorder and Inorder Traversal
- leetCode(18):Construct Binary Tree from Preorder and Inorder (Inorder and Postorder) Traversal
- LeetCode 105, 106. Construct Binary Tree from Preorder and Inorder/Inorder and Postorder Traversal
- 【Leetcode】【python】Construct Binary Tree from Preorder and Inorder Traversal (Inorder and Postorder)
- Construct Binary Tree from Inorder and Preorder(Postorder) Traversal
- Construct Binary Tree from Preorder (Postorder) and Inorder Traversal
- *(leetcode) Construct Binary Tree from Inorder and Postorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Inorder and Postorder Traversal
- *(leetcode) Construct Binary Tree from Preorder and Inorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode][tree] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode]Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal
- 安装Rad Hat Enterprise Linux 6.0
- 软件盘弹出导致标题栏挤出屏幕的解决办法
- spark+hcatalog操作hive表及其数据
- 两圆相交面积
- Android XML文件使用
- [Leetcode] Construct Binary Tree from Inorder and Postorder/Preorder and Inorder Traversal
- sap 系统之间读取数据- rfc_read_table
- iOS 之init、loadView、viewDidLoad、viewDidUnload、dealloc
- Comparable接口与Comparator接口主要区别及实例
- C语言定义常量
- ping命令执行过程详解
- android Fragments详解四:管理fragment
- you must restart adb and eclipse的相关解决办法
- TinyOS nesC myep3 - upgrade