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

LeetCode[106]从中序和后序遍历序列构造二叉树

思路:

我觉得这种题还是要找好边界,这道题和从中序和前序遍历序列构造二叉树差不多,就是后序遍历和前序遍历是反着来的,后序遍历最后一个是头节点,然后递归时中序遍历的处理逻辑没什么变化,唯一有变化的是后序遍历的递归逻辑,在后序遍历中确认左子树和右子树的范围,左子树范围是头节点---头节点+左子树长度-1,右子树范围头节点+左子树长度---尾节点-1。

代码:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {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 helper(inorder, postorder, 0, inorder.length - 1, 0, postorder.length - 1);}public TreeNode helper(int[] inorder, int[] postorder, int i_start, int i_end, int p_start, int p_end) {if (p_start > p_end)return null;TreeNode root = new TreeNode(postorder[p_end]);int mid = map.get(postorder[p_end]);int leftLength = mid - i_start;root.left = helper(inorder, postorder, i_start, mid - 1, p_start, p_start + leftLength - 1);root.right = helper(inorder, postorder, mid + 1, i_end, p_start + leftLength, p_end - 1);return root;}
}

http://www.dtcms.com/a/249766.html

相关文章:

  • 考研好?还是找工作好?
  • 动态BGP服务器的用途都有什么?
  • Lombok 介绍
  • 33-Oracle Parallel 并行处理的选择和实践
  • 31-Oracle 23 ai-Unrestrict Parallel DML(无限制并行DML)
  • SAP复制一个自定义移动类型
  • 篇章七 论坛系统——业务开发——前端
  • Python 中的 `lru_cache` 详解
  • 掌握应用分层:高内聚低耦合的艺术
  • Python with 关键字
  • 【FineDance】ModuleNotFoundError: No module named ‘pytorch3d‘
  • 数据目录:企业数据管理的核心引擎与最佳实践
  • Linux02
  • Linux Docker的环境配置与简单使用
  • 【Day48】
  • Docker 在尝试连接 Docker Hub 时遇到网络问题(超时)
  • 27 - ASPP模块
  • TI 毫米波雷达走读系列—— 3DFFT及测角
  • 疫菌QBD案例
  • Spring-rabbit重试消费源码分析
  • 低温对MOSFET的影响
  • SpringBoot打包运行原理和加载机制原理
  • 篇章六 论坛系统——业务开发——实现业务功能
  • JUC核心解析系列(四)——同步工具类 (Synchronizers)深度解析
  • Pytorch 卷积神经网络参数说明一
  • OSGI 是什么,有哪些具体应用、java8、9、10、11比较
  • uni-app项目实战笔记11--定义scss颜色变量方便页面引用
  • HarmonyOS 组件复用 指南
  • [直播推流] 使用 librtmp 库推流
  • 开心灿烂go开发面试题