news 2026/6/7 8:35:26

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

作者头像

张小明

前端开发工程师

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/5/30 21:25:08

NotaGen实战案例:打造个性化莫扎特风格作品

NotaGen实战案例&#xff1a;打造个性化莫扎特风格作品 1. 引言 在人工智能与艺术融合的浪潮中&#xff0c;音乐生成技术正逐步从实验性探索走向实际应用。NotaGen作为一款基于大语言模型&#xff08;LLM&#xff09;范式构建的高质量古典符号化音乐生成系统&#xff0c;为音…

作者头像 李华
网站建设 2026/5/28 20:02:56

如何高效部署70亿参数翻译大模型?HY-MT1.5-7B镜像一键启动全解析

如何高效部署70亿参数翻译大模型&#xff1f;HY-MT1.5-7B镜像一键启动全解析 在多语言内容需求激增的当下&#xff0c;高质量、低延迟的机器翻译能力已成为企业出海、学术交流和跨文化协作的核心基础设施。然而&#xff0c;传统开源翻译模型往往面临部署复杂、下载缓慢、推理效…

作者头像 李华
网站建设 2026/6/3 9:26:02

上下文无关文法(CFG)—软考文法题

你有没有想过&#xff0c;咱们写的代码&#xff08;比如ab-c&#xff09;&#xff0c;为啥计算机能看懂&#xff1f;其实背后是一套 “规则说明书” 在起作用 —— 这就是上下文无关文法&#xff08;CFG&#xff09;&#xff0c;而 “推导” 就是计算机按照说明书把 “抽象符号…

作者头像 李华
网站建设 2026/5/29 11:40:51

PV 操作——软考文法题

PV 操作&#xff1a;从荷兰语源到芯片行业库存管理的深度解析一、 PV 操作的起源与定义&#xff1a;荷兰语的智慧结晶PV 操作是计算机科学中用于进程同步与互斥的经典原语&#xff0c;由荷兰计算机科学家艾兹赫尔・戴克斯特拉 (Edsger W. Dijkstra) 于 1965 年提出。其名称源自…

作者头像 李华
网站建设 2026/5/28 20:33:58

从零生成贝多芬风格乐曲|NotaGen WebUI操作实战

从零生成贝多芬风格乐曲&#xff5c;NotaGen WebUI操作实战 1. 引言&#xff1a;AI音乐生成的新范式 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;技术不仅在自然语言处理领域取得突破&#xff0c;也开始向艺术创作领域延伸。音乐作为人类情感表达的重要载体&am…

作者头像 李华
网站建设 2026/5/28 20:03:02

Fast-Font视觉加速字体:开启高效阅读革命

Fast-Font视觉加速字体&#xff1a;开启高效阅读革命 【免费下载链接】Fast-Font This font provides faster reading through facilitating the reading process by guiding the eyes through text with artificial fixation points. 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华