news 2026/4/16 14:05:31

二叉树的右视图(BFS或DFS)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉树的右视图(BFS或DFS)

思路:

1.BFS,使用队列模拟BFS,层序遍历二叉树,从右子树开始遍历,每层第一个访问的就是最右边的那个结点。

2.DFS,使用栈模拟DFS,从右子树开始遍历,遍历到底。对树进行深度优先搜索,在搜索过程中,总是先访问右子树。那么对于每一层来说,我们在这层见到的第一个结点一定是最右边的结点。

3.都需要知道当前结点在哪一层,所以要用map记录。可以存储在每个深度访问的第一个结点,一旦我们知道了树的层数,就可以得到最终的结果数组。

//BFS /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector<int> rightSideView(TreeNode* root) { if(root==nullptr) return {}; unordered_map<int,int> num; queue<pair<TreeNode*,int>> node_depth; node_depth.push({root,0}); int maxdep=-1; while(!node_depth.empty()){ auto p=node_depth.front(); node_depth.pop(); TreeNode* nod=p.first; int dep=p.second; if(nod!=nullptr){ maxdep=max(maxdep,dep); if(num.find(dep) == num.end()){ num[dep]=nod->val; } node_depth.push({nod->right,dep+1}); node_depth.push({nod->left,dep+1}); } } vector<int> rightsort; for(int i=0;i<=maxdep;i++){ rightsort.push_back(num[i]); } return rightsort; } }; //DFS class Solution { public: vector<int> rightSideView(TreeNode* root) { if(root==nullptr) return {}; unordered_map<int,int> num; stack<pair<TreeNode*,int>> node_depth; node_depth.push({root,0}); int maxdep=-1; while(!node_depth.empty()){ auto p=node_depth.top(); node_depth.pop(); TreeNode* nod=p.first; int dep=p.second; if(nod!=nullptr){ maxdep=max(maxdep,dep); if(num.find(dep) == num.end()){ num[dep]=nod->val; } node_depth.push({nod->left,dep+1}); node_depth.push({nod->right,dep+1}); } } vector<int> rightsort; for(int i=0;i<=maxdep;i++){ rightsort.push_back(num[i]); } return rightsort; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:29:25

如何对数据仓库(Data Warehouse)的ETL过程进行测试?

数据仓库ETL测试的必要性与挑战 随着企业数据驱动决策的普及&#xff0c;数据仓库&#xff08;Data Warehouse&#xff09;作为核心数据枢纽&#xff0c;其ETL&#xff08;抽取、转换、加载&#xff09;过程的可靠性和准确性直接影响数据分析质量。对软件测试从业者而言&#…

作者头像 李华
网站建设 2026/4/14 23:43:54

计算机Java毕设实战-基于springBool+Vue小吃美食分享平台的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/13 23:11:54

Claude Code Token烧钱预警!90%的成本浪费都能这样省

Claude Code Token烧钱预警&#xff01;90%的成本浪费都能这样省 用Claude Code写代码的开发者&#xff0c;大概率都经历过这种“冰与火之歌”&#xff1a;一边惊叹于它分析代码库、修复Bug、独立完成模块开发的高效&#xff0c;直呼“生产力神器”&#xff1b;另一边对着Token…

作者头像 李华
网站建设 2026/4/15 15:26:29

基于SpringBoot的水族馆商品销售与经营管理系统毕业设计项目源码

项目简介在水族馆多元化经营、精细化管理需求下&#xff0c;传统水族馆商品销售存在 “线上线下割裂、库存管理混乱、经营数据滞后” 的痛点&#xff0c;基于 SpringBoot 构建的商品销售与经营管理系统&#xff0c;适配游客、店员、采购人员、场馆管理员等角色&#xff0c;实现…

作者头像 李华
网站建设 2026/4/2 7:44:52

【学术英语】题库 - 排序题汇总与解析

文章目录Set 1: OrderingSet 7: Ordering (Education Theme)Set 8: Ordering (Environmental Policy Theme)第二套&#xff1a;排序题 (Ordering)第三套&#xff1a;排序题 (Ordering)第四套&#xff1a;排序题 (Ordering)第五套&#xff1a;排序题 (Ordering)第六套&#xff1…

作者头像 李华
网站建设 2026/4/15 4:31:06

鸿蒙学习实战之路-语音识别-离线转文本实现

鸿蒙学习实战之路-语音识别-离线转文本实现 最近好多朋友问我&#xff1a;“西兰花啊&#xff0c;我想做个鸿蒙应用&#xff0c;需要离线语音转文字功能&#xff0c;这玩意儿难不难啊&#xff1f;” 害&#xff0c;这问题可问对人了&#xff01;作为一个正在把 npm install 炒…

作者头像 李华