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

构造二叉树

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

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;}
}

http://www.xdnf.cn/news/5668.html

相关文章:

  • STM32的TIMx中Prescaler和ClockDivision的区别
  • AI与IoT携手,精准农业未来已来
  • Nacos源码—8.Nacos升级gRPC分析六
  • 2025年5月12日第一轮
  • 最大子数组和
  • Ubuntu虚拟机文件系统扩容
  • 通过Windows操作系统双因素认证实现工业设备安全运维:安当SLA
  • 论文学习_A Survey of Binary Code Similarity
  • 生成式人工智能认证(GAI认证)适合人群
  • 电商平台一站式网络安全架构设计指南
  • 自动化测试与功能测试详解
  • 【办公类-99-06】20250512用Python制作PPT的GIF照片动图(统一图片大小、自定义不同切换秒数,以蝴蝶为例)
  • 并发笔记-信号量(四)
  • ActiveMQ 高级特性:延迟消息与优先级队列实战(二)
  • MultiTTS 1.7.6 | 最强离线语音引擎,提供多音色无障碍朗读功能,附带语音包
  • 使用PhpStudy搭建Web测试服务器
  • 机动车授权签字人备考考试题库及答案
  • HLS图像处理:从算法到硬件的创新加速之旅
  • 蓝牙AVDTP协议概述
  • 配置Hadoop集群环境准备
  • Python集成开发环境之Thonny
  • Python实例题:Django搭建简易博客
  • FEKO许可证的安全与合规性
  • uni-app微信小程序登录流程详解
  • linux-驱动开发之设备树详解(RK平台为例)
  • 【递归、搜索与回溯】专题一:递归(一)
  • Java面试高阶篇:Spring Boot+Quarkus+Redis高并发架构设计与性能优化实战
  • Maven 项目构建时编译错误问题排查与解决
  • Spring Boot整合Kafka实战指南:从环境搭建到消息处理全解析
  • 【MCP】魔搭社区MCP服务(高德地图、everything文件搜索)