1 class Solution: 2 def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode: 3 if len(postorder)==0 or len(inorder)==0: 4 return None 5 6 val = postorder[-1] 7 t = TreeNode(val) 8 index = inorder.index(val) 9 t.left = self.buildTree(inorder[:index],postorder[:index]) 10 t.right = self.buildTree(inorder[index+1:],postorder[index:-1]) 11 return t
本题与leetcode105是同一类的问题。
leetcode105是使用前序和中序构建二叉树,本题是使用中序和后序构建二叉树。
注意,前、中、后三种序列中,只需中序和另外任意一种序列,即可构建二叉树。但是只有前序和后序是无法唯一确定二叉树结构的。