从前序和中序构造二叉树
从前序和中序构造二叉树
给定两个整数数组 preorder
和 inorder
,其中 preorder
是二叉树的先序遍历, inorder
是同一棵树的中序遍历,请构造二叉树并返回其根节点。
示例 1:
1 |
|
示例 2:
1 |
|
解法 递归
对于任意一颗树而言,前序遍历的形式总是
1 |
|
即根节点总是前序遍历中的第一个节点。而中序遍历的形式总是
1 |
|
只要我们在中序遍历中定位到根节点,那么我们就可以分别知道左子树和右子树中的节点数目。由于同一颗子树的前序遍历和中序遍历的长度显然是相同的,因此我们就可以对应到前序遍历的结果中,对上述形式中的所有左右括号进行定位。
这样以来,我们就知道了左子树的前序遍历和中序遍历结果,以及右子树的前序遍历和中序遍历结果,我们就可以递归地对构造出左子树和右子树,再将这两颗子树接到根节点的左右位置
代码为:
1 |
|
从前序和中序构造二叉树
http://example.com/2022/09/08/从前序和中序构造二叉树/