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

【简单】根据后序数组重建搜索二叉树-Java:进阶问题

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科… 继续阅读 前言https://www.captainai.net/troubleshooter

package live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree; import live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.Node; import static live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.print; /** * 根据后序数组重建搜索二叉树 * * 【题目】 * 进阶:如果整型数组arr中没有重复值,且已知是一棵搜索二叉树的后序遍历结果,通过数组arr重构二叉树。 * * 【难度】 * 简单 * * 【解答】 * 进阶问题的分析与原问题同理,一棵树的后序数组中最后一个值为二叉树头节点的值,数组左部分都比头节点的值小,用来生成头节点 * 的左子树,剩下的部分用来生成右子树。 * 具体过程请参看如下代码中的postArrayToBST方法。 * * @author Created by LiveEveryDay */ public class ReconstructBSTByPostArray2 { public static Node postArrayToBST(int[] arr) { if (arr == null) { return null; } return postToBST(arr, 0, arr.length - 1); } private static Node postToBST(int[] arr, int start, int end) { if (start > end) { return null; } Node root = new Node(arr[end]); int less = -1; int greater = end; for (int i = start; i < end; i++) { if (arr[end] > arr[i]) { less = i; } else { greater = greater == end ? i : greater; } } root.left = postToBST(arr, start, less); root.right = postToBST(arr, greater, end - 1); return root; } public static void main(String[] args) { int[] a = {2, 1, 3, 6, 5, 7, 4}; Node root = postArrayToBST(a); print(root); } } // ------ Output ------ /* 4 / \ 3 7 / / 1 5 \ \ 2 6 */
http://www.cnnetsun.cn/news/2107035.html

相关文章:

  • 机器学习优化算法经典书籍与实战技巧
  • Awesome Codex Skills中的Supadata自动化:数据管理和处理的集成指南
  • 量子纠缠检测的SWAP测试原理与光子芯片实现
  • 如何掌握PyTorch Image Models自适应池化层:提升图像分类性能的终极指南
  • 正则表达式终极指南:10个文本处理匹配技巧
  • 开发者必备:开源命令行工具箱Toolmate的设计原理与实战应用
  • owl4ce/dotfiles双主题切换:从机械风到艺术风的完美转换
  • NumPy矩阵运算在机器学习中的核心应用与优化技巧
  • 终极Meteor社区资源指南:论坛、博客和教程一站式汇总
  • DevDocs隐私保护终极指南:用户数据合规处理与安全配置全解析
  • 机器学习课程选择与学习路径全指南
  • 2025届最火的五大降重复率方案推荐榜单
  • 终极PHP导航菜单指南:从KnpMenu到Spatie Menu的完整实现方案
  • 解锁Yew Canvas绘图潜能:10个高效技巧打造惊艳2D和3D图形渲染
  • 终极指南:Consul服务发现如何实现高可用的服务注册表与元数据管理
  • 如何快速掌握Preact多媒体应用开发:构建现代音视频处理应用的完整指南
  • 如何快速掌握Type Challenges中的数组最后一个元素类型提取技巧
  • 怎么降AIGC检测率最快?降AI率亲测有效的3步法告诉你1天搞定!
  • 如何快速掌握Consul网络配置:多网卡环境与复杂网络拓扑的终极适配指南
  • 终极docsify模板工程:快速启动项目脚手架的完整指南
  • 机器学习基线分类器构建指南:从随机猜测到专业实践
  • Audiveris导出格式详解:MusicXML、PDF与压缩包输出选项
  • py每日spider案例之长jiang大学登录接口(AES)
  • 终极D2L.ai实战指南:从零开始构建卷积神经网络CNN模型的完整教程
  • Pathway终极指南:如何用开源框架实现金融级实时数据处理
  • openapi-to-cli:让AI智能体轻量调用HTTP API的CLI方案
  • C++并查集算法简单详解
  • 注意力机制与Transformer模型核心技术解析
  • Venera漫画阅读器:一站式解决你的漫画阅读难题
  • Qt的HSL色彩系统