106. 從中序與後序遍歷序列構造二叉樹(中等,二叉樹)
阿新 • • 發佈:2018-12-16
根據一棵樹的中序遍歷與後序遍歷構造二叉樹。
注意:
你可以假設樹中沒有重複的元素。
例如,給出
中序遍歷 inorder = [9,3,15,20,7] 後序遍歷 postorder = [9,15,7,20,3]
返回如下的二叉樹:
3 / \ 9 20 / \ 15 7
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def buildTree(self, inorder, postorder): """ :type inorder: List[int] :type postorder: List[int] :rtype: TreeNode """ if inorder==[]: return None root=TreeNode(postorder[-1]) p=inorder.index(root.val) root.left=self.buildTree(inorder[:p],postorder[:p]) root.right=self.buildTree(inorder[p+1:],postorder[p:-1]) return root
執行用時: 228 ms, 在Construct Binary Tree from Inorder and Postorder Traversal的Python提交中擊敗了63.55% 的使用者