栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指 Offer:07

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer:07

前序遍历 preorder = [3,9,20,15,7]

中序遍历 inorder = [9,3,15,20,7]

返回如下的二叉树:

3

/

9 20

/

15 7

限制:

0 <= 节点个数 <= 5000

[](()3. 实现方法


[](()3.1 方法 1 [](()3.1.1 思路
  1. 利用指针

  2. 前序遍历的第一个元素肯定是二叉树的根节点,我么可以查找该节点在中序遍历中的位置,然后拆分出左右子树;

  3. 其中用一个指针用于指向根节点所在索引位置,然后根据该指针位置来拆分左右子树;

  4. 最后递归求出左右子树即可;

[](()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;

}

// 创建根节点,根节点即为先序遍历中的第一个元素

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号