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

从中序和后序遍历序列构造二叉树

注意:该解法是基于二叉树中的值不存在重复所写的。

代码如下,可开袋即食

class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] inorder, int[] postorder) {map = new HashMap<>();for(int i = 0; i < inorder.length; i++){map.put(inorder[i], i);//记录中序遍历的根节点位置}return build(inorder, postorder, 0, inorder.length-1, 0, inorder.length- 1);}public TreeNode build(int[] inorder, int[] postorder, int i_left, int i_right, int p_left, int p_right){if(p_left > p_right) return null;int r_root = map.get(postorder[p_right]);//中序遍历根节点位置TreeNode root = new TreeNode(postorder[p_right]);//创建根节点root.left = build(inorder, postorder, i_left, r_root-1, p_left, p_left +r_root-i_left-1);root.right = build(inorder, postorder, r_root+1, i_right, p_left + r_root-i_left, p_right-1);return root;}
}

这里主要的问题就是递归的边界问题了。

i_left:中序遍历的左边界

i_right:中序遍历的右边界

p_left:后序遍历的左边界

p_rigjt:后序遍历的右边界

递归的时候,需要注意里面的边界问题。

在左子树递归的时候,难的是后序遍历的边界处理。

i_left不变,i_right自然就变成r_root-1了

p_left不变,而p_right即左子树的长度了,即p_left+root-1-i_left。

为什么是这样算的?因为后序遍历的结果,前面一部分是左子树,后面一部分是柚子树,最后是根节点,如果不懂的话,可以自己画图,然后把中序和后序写出来,自己去想我这句话说的是什么意思。

然后右子树递归的时候,同样,难的是后序遍历的边界处理。

i_left变成r_root+1,i_right不变

p_left变成p_left+r_root-i_left,r_right向左移动一位,p_right-1

后序遍历的左右边界是这一题的难点。

http://www.lryc.cn/news/214655.html

相关文章:

  • Apache ActiveMQ (版本 < 5.18.3) (CNVD-2023-69477)RCE修复方案/缓解方案
  • 61. 旋转链表、Leetcode的Python实现
  • 基于tpshop开发多商户源码支持手机端+商家+门店 +分销+淘宝数据导入+APP+可视化编辑
  • ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
  • HTML简单实现v-if与v-for与v-model
  • 【学习笔记】[PA2021] Fiolki 2
  • 计算1到100的和
  • C++下OpenMP耗时统计
  • PTA 函数题(C语言)-- 阶乘计算升级版
  • 内网穿透入门
  • Pickle pyhton反序列化
  • 动静分离技术
  • STM32单片机智能小车一PWM方式实现小车调速和转向
  • 灰狼优化算法(GWO)python
  • 项目知识点总结-住房图片信息添加-Excel导出
  • 第三届iEnglish全国ETP大赛决赛即将启动
  • 创造产业链协同优势后,凌雄科技在DaaS行业转动成长飞轮
  • 【protobuf】protobuf自定义数据格式,CMake编译C++文件读写自定义数据
  • 解决:http://localhost:8080 不在以下 request 合法域名列表中
  • Linux普通用户提权(sudo)
  • 链表指定节点的插入
  • 解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s)
  • Sci Immunol丨Tim-3 适配器蛋白 Bat3 是耐受性树突状细胞
  • 天软特色因子看板(2023.10 第14期)
  • Photoshop(PS)2021版 安装教程(图文教程超详细)
  • 详解React:Props构建可复用UI的基石
  • 【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin
  • 本地启动Elasticsearch(docker启动)
  • JVM修炼印记之初识
  • 开关电源老化试验和性能检测系统软件