文章目录

  • 题目
  • 思路
  • 提交代码(ac代码)
  • 测试代码

题目

Leetcode199二叉树右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

输入: [1,2,5,4,5,6]
输出: [1, 5, 6]
解释:1            <---/   \
2     5        <---
/ \     \
4  5     6       <---

思路

层次遍历二叉树,也就是广度优先搜索BFS
这里需要做的是如何把每一层最后一个元素进行标记。
我们把节点和它所在的层数组在一起同时入队列Q。

queue<pair<TreeNode*,int> > Q;

然后可以求解层数的问题

提交代码(ac代码)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:vector<int> rightSideView(TreeNode* root){vector<int> view;//save the resultqueue<pair<TreeNode*,int> > Q;if(root)Q.push(make_pair(root,0));//root and its level 0while(!Q.empty()){TreeNode* node=Q.front().first;//current nodeint depth=Q.front().second;//level of the nodeQ.pop();if(view.size()==depth)//每行第一个 view.push_back(node->val);elseview[depth]=node->val;//每行只存一个,不断更新 if(node->left)Q.push(make_pair(node->left,depth+1));if(node->right)Q.push(make_pair(node->right,depth+1));            }return view;}
};

测试代码

#include<iostream>#include<vector>#include<queue>using namespace std;struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int x):val(x),left(NULL),right(NULL){}    };vector<int> rightSideView(TreeNode* root){vector<int> view;//save the resultqueue<pair<TreeNode*,int> > Q;if(root)Q.push(make_pair(root,0));//root and its level 0while(!Q.empty()){TreeNode* node=Q.front().first;//current nodeint depth=Q.front().second;//level of the nodeQ.pop();if(view.size()==depth)//每行第一个 view.push_back(node->val);elseview[depth]=node->val;//每行只存一个,不断更新 if(node->left)Q.push(make_pair(node->left,depth+1));if(node->right)Q.push(make_pair(node->right,depth+1));         }return view;}int main(){TreeNode a(1);TreeNode b(2);TreeNode c(5);TreeNode d(3);TreeNode e(4);TreeNode f(6);a.left=&b;a.right=&c;c.right=&f;b.left=&d;b.right=&e;vector<int> test;test=rightSideView(&a);for(size_t i=0;i<test.size();++i)cout<<test[i]<<"";return 0;}

测试结果

Leetcode199二叉树右视图[C++题解]:BFS+层数相关推荐

  1. 牛客题霸 [输出二叉树的右视图] C++题解/答案

    牛客题霸 [输出二叉树的右视图] C++题解/答案 题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 题解: 分两个过程: 先用前序遍历+中序遍历恢复二叉树,这个应该都会. ...

  2. 二叉树的左视图和右视图

    所谓二叉树的左视图,是指打印从左方向看到的二叉树. 根据前序遍历算法思想,在左视图代码中先遍历左子树在遍历左子树,这样在判断level == len(stack)时,先遍历左子树则保证层数与数组长度相 ...

  3. 二叉树的左视图和右视图 形象理解(附C++代码)

    定义 二叉树的左(右)视图即:以从上到下的顺序,输出一颗二叉树每一层最左(右)端的节点,结果就是其左(右)视图. 步骤 采用递归的方式,将二叉树的所有节点连带其深度信息存入动态数组(若对二叉树的递归遍 ...

  4. LeetCode-笔记-199. 二叉树的右视图——BFS广度优先搜索

    LeetCode-笔记-199. 二叉树的右视图 199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,n ...

  5. [Leedcode][JAVA][第199题][二叉树的右视图][BFS][DFS][前中后序遍历]

    [问题描述]199.二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值.示例:输入: [1,2,3,null,5,null,4] 输出: [1, ...

  6. Leetcode-199二叉树的右视图(二叉树左视图)

    题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 输 ...

  7. 创建二叉树的代码_解二叉树的右视图的两种方式

    给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 问题分析 这题说的很明白,就是站在一棵二叉树的右边,你所能看到的结点值.对于二叉树的遍历,前面有简单 ...

  8. Python打印二叉树的左视图、右视图

    先求出二叉树的最大深度,然后求出每一层的节点列表,求每一层节点列表就相当于求距离根节点指定深度的所有节点,再将每一层的节点列表中的最左或最右节点打印出来,或者添加到新列表中,就是二叉树的左视图.右视图 ...

  9. 199. 二叉树的右视图

    199. 二叉树的右视图: 题目链接 :199. 二叉树的右视图 题目: 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值 思路: BFS( ...

最新文章

  1. python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...
  2. 设计模式之迭代子模式
  3. 弹窗在大屏上居中对齐,在小屏上被挡住解决方案
  4. jzoj3794,P1383-高级打字机【欧拉序,离线O(n)】
  5. Win7中多账户设置自动登录的图文方法
  6. 2019牛客暑期多校训练营(第三场) B-Crazy Binary String
  7. matlab脑肿瘤识别与分割程序_车牌识别算法
  8. HDU-----(4858)项目管理(模拟)
  9. 32. Magento log()方法
  10. 【Zigbee】进阶篇(2) Zigbee协议栈中OSAL的执行流程
  11. gitlab发邮件收不到
  12. 去美国看展会1:办理护照和签证
  13. (深入篇)漫游语音识别技术—带你走进语音识别技术的世界
  14. 2023 年大淘宝 Web 端技术概览
  15. djfpvpdjfpvp耐高温计算机电缆,电缆DJFPVP DJFPVP耐高温计算机电缆
  16. 火车票改签退票规则,儿童票规则
  17. win10使用FFmpeg录屏/录音
  18. maya为什么不能导出fbx_maya的模型导出为OBJ,然后导入到3dmax后uv全乱了 (导出FBX更不行,导出的FBX文件放max里面基本没面了)...
  19. 西方经济学微观部分中的英文字母缩写
  20. 不小心删除了ubuntu的内核,进不去系统和Biss,解决办法。

热门文章

  1. Hadoop权威指南学习笔记三
  2. 10.5做题——全排列(初赛复习)
  3. 屏幕滚动控件ScrollView的使用
  4. EasyUI Combogrid Bug
  5. Android多媒体之SoundPool
  6. msiexec 命令使用文档
  7. [转]ASP.Net缓存总结
  8. shiro权限管理_重量级课程发布~企业权限管理平台(SpringBoot2.0+Shiro+Vue)
  9. STO双中心势能积分
  10. hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库