链接:
https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
题目:
根据一棵树的【中序遍历】与【后序遍历】构造二叉树。
注意: 你可以假设树中没有重复的元素。
例如,给出中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树:
3 / \ 9 20 / \ 15 7
我的解法1:标准解法
# 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):
if inorder:
root = TreeNode(postorder[-1])
idx = inorder.index(postorder[-1])
root.left = self.buildTree(inorder[:idx], postorder[:idx])
root.right = self.buildTree(inorder[idx+1:], postorder[idx:len(postorder)-1])
return root
我的解法2: