[python版]Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
阿新 • • 發佈:2018-12-11
題目
中文:根據中序後序構建二叉樹
英文原題:
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
For example, given
inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]
程式碼實現
實現方法類似給定前序中序構建二叉樹的方法:劍指offer–前序中序構建二叉樹
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def buildTree(self, inorder, postorder): """ :type inorder: List[int] :type postorder: List[int] :rtype: TreeNode """ if not inorder or not postorder: return None root = postorder[-1] index = inorder.index(root) ret = TreeNode(postorder.pop()) ret.right = self.buildTree(inorder[index+1:], postorder) ret.left = self.buildTree(inorder[:index], postorder) return ret