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

已知先序遍历和中序遍历,求二叉树的后序遍历

题目

有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。现有两组字母,分别表示前序遍历(父节点->左孩子->右孩子)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出后序遍历(左孩子->右孩子->父节点)的结果。

代码

import java.util.Scanner; // 二叉树节点定义 class TreeNode { char val; TreeNode left; TreeNode right; TreeNode(char v) { val = v; left = null; right = null; } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String pre = sc.next(); // 前序 String in = sc.next(); // 中序 TreeNode root = buildTree(pre, in); postOrder(root); } // 根据前序+中序重建二叉树 private static TreeNode buildTree(String pre, String in) { if (pre.isEmpty()) { return null; } // 前序第一个就是根 char rootVal = pre.charAt(0); TreeNode root = new TreeNode(rootVal); // 只有一个节点 if (pre.length() == 1) { return root; } // 在中序里找到根的位置 int midIdx = 0; while (midIdx < in.length() && in.charAt(midIdx) != rootVal) { midIdx++; } // 拆分左右子树 String preLeft = pre.substring(1, midIdx + 1); String preRight = pre.substring(midIdx + 1); String inLeft = in.substring(0, midIdx); String inRight = in.substring(midIdx + 1); root.left = buildTree(preLeft, inLeft); root.right = buildTree(preRight, inRight); return root; } // 后序遍历:左 -> 右 -> 根 private static void postOrder(TreeNode node) { if (node == null) return; postOrder(node.left); postOrder(node.right); System.out.print(node.val); } }
http://www.jsqmd.com/news/1091478/

相关文章:

  • 从物理到逻辑:VLAN与WLAN在企业网络中的角色定位与协同应用
  • 计算机毕业设计之基于SSM框架的高校运动会管理系统设计与实现
  • ChatGPT Plus额度不够用?别急着续费——这6个企业级技巧可提升实际可用额度达300%(经OpenAI Support验证)
  • TFT LCD、OLED、MicroLED 电性测试
  • 回流焊的种类及选型指南
  • 3个实际场景告诉你,为什么你需要Winhance中文版优化Windows系统
  • SpringBoot集成国密SM4算法实现配置文件自动加解密方案
  • 百考通的语义级重构技术智能降重
  • Pikachu靶场CSRF模块配置排错指南:从Session原理到实战修复
  • 毕昇JDK 25贡献指南:新手也能轻松参与的开源项目代码提交全流程
  • 手机/电脑通用!类似PanDownload的百度网盘多线程下载神器推荐
  • 爽翻!输入题目,这几款AI论文平台直接生成结构完整的毕业论文
  • 集合API
  • 终极语音处理方案:让AI重塑您的音频体验
  • LinkLifeVerse OS:让数据价值留在县域
  • 【多厂商网络设备巡检实战指南】-- 思科、华为、H3C、锐捷核心命令速查
  • 高速运放电路设计实战:THS6182评估板解析与ADSL有源终端应用
  • Ubuntu 26.04部署 DNS 服务器
  • 26届计算机普通双非硕秋春招,究竟有多难!
  • 5款AI率平台亲测推荐
  • “Codex + Skill 零成本做跨境”?我们把真实成本算出来了
  • 如何快速上手Apache Commons FileUpload:Java文件上传终极指南
  • dxwrapper如何让你的经典游戏在Windows 10/11上重获新生?[特殊字符]
  • 不要把 browser-use 当成“会点网页的模型”:先给浏览器 Agent 设计执行契约
  • 济南装修口碑哪家强?
  • 首页超出区域,预览的时候垂直溢出滚动,tabbar预览的时候在底部,即时设计实现
  • 别浪费钱了!2026实测靠谱的一键生成论文工具|避坑精选版
  • Ant Design 6.5.0 发布:新增设计语言文件、优化包体积,多组件功能升级!
  • 中医舌象检测和识别2:基于深度学习YOLO26神经网络实现中医舌象检测和识别(含训练代码和数据集)
  • 基于HarmonyOS 7.0 跨端开发的节能小贴士挑战页面实战