《剑指Offer(第二版)》面试题07. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

例如,给出
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:

    3
   / \
  9  20
    /  \
   15   7
 
限制:
0 <= 节点个数 <= 5000
# 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, preorder: List[int], inorder: List[int]) -> TreeNode:
        if preorder == []:
            return None
            
        root = TreeNode(preorder[0])
        index = inorder.index(root.val)
        
        root.left = self.buildTree(preorder[1:1+index], inorder[:index])
        root.right = self.buildTree(preorder[1+index:], inorder[index+1:])

        return root

 

《剑指Offer(第二版)》面试题07. 重建二叉树《剑指Offer(第二版)》面试题07. 重建二叉树 今 晚 打 老 虎 发布了220 篇原创文章 · 获赞 16 · 访问量 4万+ 私信 关注
上一篇:【树】501. 二叉搜索树中的众数


下一篇:VB.NET如何让 ASPXGridView居中