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

构造二叉树

一、由中序和后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)

/*** 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;//方便后续查找node位置public TreeNode buildTree(int[] inorder, int[] postorder) {map=new HashMap<>();for (int i=0;i<inorder.length;i++) { map.put(inorder[i],i);//将中序遍历序列保存在map中}return findNode(inorder,0,inorder.length,postorder,0,postorder.length);}public TreeNode findNode(int[] inorder,int ibegin,int iend,int[] postorder,int pbegin,int pend) {if(ibegin>=iend||pbegin>=pend)return null;//区间不满足左闭右开int rootindex=map.get(postorder[pend-1]);//得到后序遍历序列最后一个元素在中序遍历序列的位置TreeNode node=new TreeNode(inorder[rootindex]);//构造节点int leftsize=rootindex-ibegin;//左中序长度node.left=findNode(inorder,ibegin,rootindex,postorder,pbegin,pbegin+leftsize);node.right=findNode(inorder,rootindex+1,iend,postorder,pbegin+leftsize,pend-1);return node;}
}

二、由前序和中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution {Map<Integer, Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map=new HashMap<>();for (int i=0;i<inorder.length;i++) { map.put(inorder[i],i);}return findNode(inorder,0,inorder.length,preorder,0,preorder.length);}public TreeNode findNode(int[] inorder,int ibegin,int iend,int[] preorder,int pbegin,int pend) {if(ibegin>=iend||pbegin>=pend)return null;int rootIndex=map.get(preorder[pbegin]);TreeNode node=new TreeNode(inorder[rootIndex]);int leftsize=rootIndex-ibegin;node.left=findNode(inorder,ibegin,rootIndex,preorder,pbegin+1,pbegin+leftsize+1);node.right=findNode(inorder,rootIndex+1,iend,preorder,pbegin+leftsize+1,pend);return node;}
}

相关文章:

  • [学习]RTKLib详解:ionex.c、options.c与preceph.c
  • Android NDK开发入门:理解JNI的本质与数据类型处理
  • AI大模型学习二十、利用Dify+deepseekR1 使用知识库搭建初中英语学习智能客服机器人
  • 防火墙来回路径不一致导致的业务异常
  • 在Ubuntu系统下编译OpenCV 4.8源码
  • Linux驱动:驱动编译流程了解
  • AI日报 · 2025年5月12日|OpenAI 更新「Supervised Fine‑Tuning」文档与 API 示范
  • Ubuntu源码版comfyui的安装
  • 二、HAL库的命名规则详解
  • Edge浏览器打开PDF文件显示空白(每次需要等上一会)
  • Docker-配置私有仓库(Harbor)
  • Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍
  • 【CF】Day57——Codeforces Round 955 (Div. 2, with prizes from NEAR!) BCD
  • 图形化编程如何从工具迭代到生态重构?
  • 腾讯怎样基于DeepSeek搭建企业应用?怎样私有化部署满血版DS?直播:腾讯云X DeepSeek!
  • URP - 深度贴花效果实现
  • 高并发场景下的BI架构设计:衡石分布式查询引擎与缓存分级策略
  • 特伦斯折叠重锤电钢琴:年轻音乐人释放音乐自由的新选择
  • 编写一个处理txt的loader插件,适用于wbepack
  • 配置Hadoop集群环境准备
  • AI观察|从万元到百万元,DeepSeek一体机江湖混战
  • 某博主遭勒索后自杀系自导自演,成都警方立案调查
  • 4月国产新能源,降价潮迈入拐点
  • 特朗普将启的中东行会如何影响伊美核谈判?专家分析
  • 法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”
  • 伊朗外长称正与美国进行“善意”的会谈