二叉树的创建
-
创建二叉树:首先将根节点的创建过程搞清楚,左右子树按照以上根节点的创建过程递归创建
思路:前序遍历中第一个节点是根节点,第二个节点是左子树的根节点,第三个节点是右子树的根节点
中序遍历:根节点左边的是左子树的中序遍历,根节点右边的是右子树的中序遍历
根据以上两种深度遍历的特点,可以递归地创建二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7
代码:
# 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: val_index = {val:index for index, val in enumerate(inor