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

从前序与中序遍历序列构造二叉树(中等)

先从前序遍历列表取出第一个元素,这个元素就是根节点,然后从中序遍历中找到这个根节点,节点左侧就是该节点的左子树的节点集合,右侧就是该节点的右侧节点集合,然后递归构建左右子树。

/*** 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 {private Map<Integer, Integer> indexMap;public TreeNode myBuildTree(int[] preorder,int[] inorder,int preorder_left,int preorder_right,int inorder_left,int inorder_right){if(preorder_left>preorder_right){return null;}int preorder_root=preorder_left;int inorder_root=indexMap.get(preorder[preorder_root]);TreeNode root=new TreeNode(preorder[preorder_root]);int size_left_subtree=inorder_root-inorder_left;root.left=myBuildTree(preorder,inorder,preorder_left+1,preorder_left+size_left_subtree,inorder_left,inorder_root-1);root.right=myBuildTree(preorder,inorder,preorder_left+size_left_subtree+1,preorder_right,inorder_root+1,inorder_right);return root;}public TreeNode buildTree(int[] preorder, int[] inorder) {int n=inorder.length;indexMap=new HashMap<Integer,Integer>();for(int i=0;i<n;i++){indexMap.put(inorder[i],i);}return myBuildTree(preorder,inorder,0,n-1,0,n-1);}
}

相关文章:

  • ubuntu 更新华为源
  • 网络世界的“百变身份“:动态IP让连接更自由
  • DevExpressWinForms-RichEditControl-基础应用
  • FreeSWITCH Jitter Buffer 技术解析与应用指南
  • 【CanMV K230】AI_CUBE1.4
  • 利用边缘计算和工业计算机实现智能视频分析
  • AI日报 · 2025年05月16日|Google DeepMind推出AlphaEvolve,能自主设计高级算法的编码代理
  • 云存储最佳实践
  • 2025认证杯数学建模第二阶段A题完整论文(代码齐全):小行星轨迹预测思路
  • ThinkPad X250电池换电池芯(理论技术储备)
  • Tomcat发布websocket
  • Suna: 开源多面手 AI 代理
  • ESP32-C3/ESP32-C3FH4/低功耗SOC的WIFI芯片集成2.4G和BLE5.0二合一
  • 游戏站的几种形式
  • android studio clone子分支
  • 数据标注的黄金标准:如何为机器学习构建可靠标签?
  • 【python基础知识】Day 27 函数专题2:装饰器
  • 实现书签-第一部分
  • 浮点数截断法:四舍五入的精确模拟
  • 【ARM】MDK如何将变量存储到指定内存地址
  • 上海虹桥国际咖啡文化节开幕,推出茶咖文化特色街区、宝妈咖啡师培训
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机
  • 男子入户强奸高龄独居妇女致其死亡,法院:属实,已执行死刑
  • 俄副外长:俄美两国将举行双边谈判
  • 220名“特朗普币”持有者花1.48亿美元,获邀与特朗普共进晚餐
  • 回望乡土:对媒介化社会的反思