LeetCode-105-从前序与中序遍历序列构造二叉树
题目
给定两个整数数组 preorder
和 inorder
,其中
preorder
是二叉树的先序遍历,
inorder
是同一棵树的中序遍历,请构造二叉树并返回其根节点。
示例 1:
1 |
|
示例 2:
1 |
|
提示:
1 <= preorder.length <= 3000
inorder.length == preorder.length
-3000 <= preorder[i], inorder[i] <= 3000
preorder
和inorder
均 无重复 元素inorder
均出现在preorder
preorder
保证 为二叉树的前序遍历序列inorder
保证 为二叉树的中序遍历序列
题解
这一题我是有思路的,奈何水平低代码写不出来,关键点在于:
先序序列第一个为根节点,然后在中序序列中可以确定左子树,根节点,右子树的各个分段;然后构造根节点,再递归构造左子树和右子树就可以了。
在中序序列中定位根节点的位置,可以先把中序序列储存到哈希表中,这样便可以十分快速的定位到根节点位置;
而在先序序列中,给出的第一个节点便是根节点(递归操作中开始的第一个位置便是根节点)。
递归开始的各个位置也需要多加思考。
1 |
|
LeetCode-105-从前序与中序遍历序列构造二叉树
https://excelius.xyz/leetcode-105-从前序与中序遍历序列构造二叉树/