[](()3. 实现方法
[](()3.1 方法 1
[](()3.1.1 思路
-
利用指针
-
前序遍历的第一个元素肯定是二叉树的根节点,我么可以查找该节点在中序遍历中的位置,然后拆分出左右子树;
-
其中用一个指针用于指向根节点所在索引位置,然后根据该指针位置来拆分左右子树;
-
最后递归求出左右子树即可;
[](()3.1.2 实现
public TreeNode buildTree(int[] preorder, int[] inorder) {
return recursive(0, 0, inorder.length - 1, preorder, inorder);
}
public TreeNode recursive(int preStart, int inStart, int inEnd, int[] preOrder, 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 int[] inOrder){
//
if(inStart > inEnd || preStart > preOrder.length - 1){
return null;
}
// 创建根节点,根节点即为先序遍历中的第一个元素