题目
中文:根据中序后序构建二叉树
英文原题:
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