news 2026/4/3 5:07:42

【新视角】输出二叉树的右视图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【新视角】输出二叉树的右视图

求解代码

// 存储最终结果:key = 二叉树的层级(根节点在第0层),value = 该层级【最右侧】的节点值privateHashMap<Integer,Integer>ans=newHashMap<>();// 预处理哈希表:key=中序数组的节点值,value=该值在中序数组的下标privateHashMap<Integer,Integer>map=newHashMap<>();// 前序数组的全局遍历指针:按「根→左→右」的前序规则,依次取当前递归层的根节点,取完自增privateintlevel=0;publicvoidbuildTree(int[]preOrder,int[]inOrder,intleft,intright,inti){if(left>right){return;}// 按前序顺序取根节点,通过哈希表拿到根节点在中序数组的下标indexintindex=map.get(preOrder[level++]);// 递归构建左子树,中序区间[left, index-1],子节点层级 = 父层级+1buildTree(preOrder,inOrder,left,index-1,i+1);// 递归构建右子树,中序区间[index+1, right],子节点层级 = 父层级+1buildTree(preOrder,inOrder,index+1,right,i+1);// 存入当前节点到对应层级,后存的节点会覆盖先存的 → 最终保留该层最右侧节点ans.put(i,inOrder[index]);}publicint[]solve(int[]preOrder,int[]inOrder){for(inti=0;i<inOrder.length;i++){map.put(inOrder[i],i);}buildTree(preOrder,inOrder,0,preOrder.length-1,0);int[]temp=newint[ans.size()];for(inti=0;i<ans.size();i++){temp[i]=ans.get(i);}returntemp;}

小贴士

解释一下这行代码ans.put(i, inOrder[index]);可以拿到「每层最右侧」的节点:

因为在递归时,是先递归构建左子树,再递归构建右子树,这个顺序意味着:在同一层级中,「左侧节点」会被先处理,「右侧节点」被后处理。

对于哈希表来说,相同key的put操作,会覆盖原值,在同一层级中,不管有多少个节点,最终只会存最后一次 put 的那个值

所以,同一层级的右侧节点一定是最后一个被put的,所以最终ans.get(i)拿到的,一定是「第 i 层最右侧的节点值」。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 16:27:52

如何三步打造移动编程神器:VSCode便携版完全指南

如何三步打造移动编程神器&#xff1a;VSCode便携版完全指南 【免费下载链接】VSCode-Portable VSCode 便携版 VSCode Portable 项目地址: https://gitcode.com/gh_mirrors/vsc/VSCode-Portable 还在为每次换电脑都要重新配置开发环境而烦恼吗&#xff1f;VSCode便携版就…

作者头像 李华
网站建设 2026/4/3 2:10:59

Paperless-ngx实战手册:让文档管理变得简单高效

Paperless-ngx实战手册&#xff1a;让文档管理变得简单高效 【免费下载链接】paperless-ngx A community-supported supercharged version of paperless: scan, index and archive all your physical documents 项目地址: https://gitcode.com/GitHub_Trending/pa/paperless-…

作者头像 李华
网站建设 2026/4/2 1:27:28

FunASR热词定制教程:10分钟学会,提升识别准确率

FunASR热词定制教程&#xff1a;10分钟学会&#xff0c;提升识别准确率 你是不是也遇到过这样的情况&#xff1a;说话时明明发音清晰&#xff0c;可语音识别系统就是“听不懂”&#xff1f;尤其是医生写病历的时候&#xff0c;像“左心室肥厚”“三叉神经痛”这种专业术语&…

作者头像 李华
网站建设 2026/3/19 21:48:23

MinerU2.5-1.2B应用实战:科研论文图表数据自动提取

MinerU2.5-1.2B应用实战&#xff1a;科研论文图表数据自动提取 1. 引言 1.1 业务场景描述 在科研工作中&#xff0c;研究者经常需要从大量学术论文中提取关键信息&#xff0c;尤其是图表数据。传统方式依赖人工阅读和手动录入&#xff0c;效率低、易出错&#xff0c;且面对海…

作者头像 李华
网站建设 2026/3/19 23:26:27

DeepSeek-R1-Distill-Qwen-1.5B避坑指南:常见部署问题全解析

DeepSeek-R1-Distill-Qwen-1.5B避坑指南&#xff1a;常见部署问题全解析 1. 引言&#xff1a;轻量化大模型的部署挑战与价值 随着大语言模型在实际业务场景中的广泛应用&#xff0c;如何在资源受限的环境中高效部署高性能模型成为工程团队的核心关注点。DeepSeek-R1-Distill-…

作者头像 李华
网站建设 2026/3/29 2:52:58

Figma到Unity设计转换终极指南:告别手动复制的时代

Figma到Unity设计转换终极指南&#xff1a;告别手动复制的时代 【免费下载链接】FigmaToUnityImporter The project that imports nodes from Figma into unity. 项目地址: https://gitcode.com/gh_mirrors/fi/FigmaToUnityImporter 还在为Figma设计稿到Unity的转换而头…

作者头像 李华