news 2026/6/9 16:59:19

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

作者头像

张小明

前端开发工程师

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/6/5 18:20:59

无纸化办公终极指南:快速构建智能文档管理系统

无纸化办公终极指南&#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-n…

作者头像 李华
网站建设 2026/6/2 13:55:18

3步掌握Bilibili视频下载神器:零基础也能轻松保存高清内容

3步掌握Bilibili视频下载神器&#xff1a;零基础也能轻松保存高清内容 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/6/5 22:42:52

BGE-Reranker-v2-m3对比测试:云端GPU 2小时省下万元设备

BGE-Reranker-v2-m3对比测试&#xff1a;云端GPU 2小时省下万元设备 你是不是也遇到过这样的情况&#xff1f;作为技术负责人&#xff0c;团队要上马一个新项目&#xff0c;需要从多个候选模型中选出最适合的那一个。比如现在要做智能客服、知识库问答或者搜索引擎优化&#x…

作者头像 李华
网站建设 2026/5/20 15:41:40

BGE-Reranker-v2-m3部署教程:Python调用API避坑指南

BGE-Reranker-v2-m3部署教程&#xff1a;Python调用API避坑指南 1. 技术背景与核心价值 在当前的检索增强生成&#xff08;RAG&#xff09;系统中&#xff0c;向量数据库通过语义相似度进行初步文档召回&#xff0c;但其基于嵌入距离的匹配机制容易受到关键词干扰或表层相似性…

作者头像 李华
网站建设 2026/6/8 7:44:51

Qwen3-4B调用延迟大?网络IO优化部署建议

Qwen3-4B调用延迟大&#xff1f;网络IO优化部署建议 在使用Qwen3-4B-Instruct-2507进行推理服务部署时&#xff0c;部分用户反馈在通过chainlit调用模型接口过程中出现响应延迟较高、首token返回时间过长等问题。本文将围绕vLLM Chainlit架构下的典型部署场景&#xff0c;深入…

作者头像 李华
网站建设 2026/6/6 12:05:58

Paperless-ngx终极指南:5步轻松构建你的无纸化办公系统

Paperless-ngx终极指南&#xff1a;5步轻松构建你的无纸化办公系统 【免费下载链接】paperless-ngx A community-supported supercharged version of paperless: scan, index and archive all your physical documents 项目地址: https://gitcode.com/GitHub_Trending/pa/pap…

作者头像 李华