当前位置: 首页 > news >正文

10.1 刷题心得

一、二叉树重建原理

通过二叉树的遍历序列(前序+中序或后序+中序)可反向重建原始二叉树结构,核心思路是:

  1. 利用遍历特性定位根节点
  2. 划分左右子树范围
  3. 递归重建整个树结构

二、遍历序列特性与根节点定位

  1. 前序遍历[根节点, 左子树前序, 右子树前序]

    • 首元素即为当前树(或子树)的根节点
  2. 后序遍历[左子树后序, 右子树后序, 根节点]

    • 尾元素即为当前树(或子树)的根节点
  3. 中序遍历[左子树中序, 根节点, 右子树中序]

    • 根节点左侧为左子树所有节点
    • 根节点右侧为右子树所有节点

三、重建步骤与数组范围处理

1. 确定根节点

  • 从前序遍历首元素或后序遍历尾元素获取根节点

2. 划分左右子树(中序遍历中)

  • 在中序遍历中找到根节点位置 rootIndex
  • 左子树节点数:leftSize = rootIndex
  • 左子树中序序列:[0, rootIndex)(包含0,不包含rootIndex)
  • 右子树中序序列:[rootIndex+1, inOrder.length)

3. 截取子树序列(关键应用 Arrays.copyOfRange())

Arrays.copyOfRange() 采用左闭右开原则:

  • 包含起始索引(from)对应的元素
  • 不包含结束索引(to)对应的元素
  • 方法签名:T[] copyOfRange(T[] original, int from, int to)
前序遍历截取示例:
// 左子树前序序列:从1开始(跳过根节点),长度为leftSize
int[] leftPre = Arrays.copyOfRange(preOrder, 1, 1 + leftSize);// 右子树前序序列:从左子树结束位置到数组末尾
int[] rightPre = Arrays.copyOfRange(preOrder, 1 + leftSize, preOrder.length);
后序遍历截取示例:
// 左子树后序序列:从0开始,长度为leftSize
int[] leftPost = Arrays.copyOfRange(postOrder, 0, leftSize);// 右子树后序序列:从左子树结束位置到倒数第二个元素(跳过根节点)
int[] rightPost = Arrays.copyOfRange(postOrder, leftSize, postOrder.length - 1);

4. 递归重建

  • 用左子树序列递归构建左子树
  • 用右子树序列递归构建右子树
  • 将左右子树连接到根节点

四、注意事项

  1. 索引计算准确性:

    • 确保 Arrays.copyOfRange() 的结束索引正确反映子树节点数量
    • 避免数组越界(结束索引可等于数组长度,但不能小于起始索引)
  2. 边界条件处理:

    • 空序列(子树为空)时直接返回null
    • 单节点序列直接返回该节点作为子树
  3. 序列组合限制:

    • 必须使用中序遍历配合前序或后序遍历才能唯一确定二叉树
    • 仅前序+后序遍历无法唯一确定树结构
http://www.dtcms.com/a/431329.html

相关文章:

  • 前端-Vue工程化
  • 深圳企业网站制作中心用网站做CAN总线通信好吗
  • 中山移动网站建设报价三室一厅二卫装修效果图
  • .net商城网站开发做封面的地图网站
  • 复习一下Cpp(1)
  • 什么网站访问量公司变更地址需要多少钱
  • final字段单元测试
  • 车载Class D功放电源脚烧蚀可能原因
  • 34线城市做网站推广最新新闻事件摘抄
  • 嵌入式ARM程序高级调试技能:26. ARM Linux CPU高负载分析:系统调用过多导致的线程高负载案例
  • 无锡企业自助建站系统网站开发和游戏开发的区别
  • 外贸网站平台都有哪些平台毕业设计做网站简单吗
  • dotnet-sdk-5.0.408-win-x64安装教程(附详细步骤和附安装包)
  • 数据要素X_解读 第三批“数据要素×”典型案例——金融服务领域【附全文阅读】
  • 一篇文章讲清Prompt、Agent、MCP、Function Calling
  • 网站栏目设计方案物流网络货运平台
  • 异步静态Sdram操作
  • 淘宝客的网站是怎么做的运城学院教务网络管理系统
  • 天津哪里做网站东莞网站建设服务有什么用
  • 网站原型设计和版式设计网站设计哪家公司好
  • 详解doris基础
  • 利用表单大师做网站济南建网站app
  • 网站需求分析文档懒人办公ppt模板免费
  • Java 集合框架之 List 全面解析(从概念到实践)
  • Linux-03_02(Linux实用操作)
  • 毕业设计 网站开发如何用dw做网站框架
  • Matlab通过GUI实现点云的最小二乘法(Kabsch)配准
  • 南浔建设局网站怎样进行seo
  • 全flash 电子商务网站如何推广医疗企业网站模板免费下载
  • 宁波市城市建设档案馆网站鹿泉区建设局网站