给定两个整数数组 preorder
和 inorder
,其中 preorder
是前序遍历序列,inorder
是同一棵树的中序遍历序列。请构造并返回二叉树的根节点。
preorder
和 inorder
均无重复元素。
经典的408考研题。按照前序遍历的顺序,根节点一定是第一个元素,然后在中序遍历中找到根节点的位置,左边的元素是左子树,右边的元素是右子树。递归的构建左右子树即可。
这里找到了根节点在中序遍历中的位置,然后递归的构建左右子树。根节点在中序遍历中的位置是root_index
,这个位置左边的元素是左子树,右边的元素是右子树。所以可以用这个位置将前序遍历和中序遍历分成两部分,分别递归的构建左右子树。
1 | # Definition for a binary tree node. |