题意:

  给一棵二叉树,要求收集每层的最后一个节点的值。按从顶到底装进vector返回。

思路:

  BFS比较简单,先遍历右孩子就行了。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<int> rightSideView(TreeNode* root) {
13         if(root==NULL)    return vector<int>();
14         deque<TreeNode*> que(1,root);
15         vector<int> ans;
16
17         while(!que.empty())
18         {
19             ans.push_back(que.front()->val);
20             for(int i=que.size(); i>0; i--)
21             {
22                 TreeNode* p=que.front();
23                 que.pop_front();
24                 if(p->right)    que.push_back(p->right);
25                 if(p->left)        que.push_back(p->left);
26             }
27         }
28         return ans;
29     }
30 };

AC代码

  DFS比较技巧,需要知道其层次。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<int> rightSideView(TreeNode* root) {
13         vector<int> ans;
14         DFS(ans,root,1);
15         return ans;
16     }
17     void DFS(vector<int>& ans,TreeNode* t,int depth)
18     {
19         if(t==NULL)    return;
20         if(depth>ans.size())    ans.push_back(t->val);
21         DFS(ans,t->right,depth+1);
22         DFS(ans,t->left,depth+1);
23     }
24 };

AC代码

转载于:https://www.cnblogs.com/xcw0754/p/4972800.html

LeetCode Binary Tree Right Side View (DFS/BFS)相关推荐

  1. LeetCode Binary Tree Right Side View(搜索)

    问题:给出一个二叉树,要求输出右视图 思路:因为要求输出右视图.可以考虑使用深度优先搜索或者 广度优先搜索. 使用深度优先搜索时,以非递归形式,将左右子树入栈,同时使用哈希表记录深度与对应右视图的值. ...

  2. LeetCode 226. 翻转二叉树(DFS BFS)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...

  3. LeetCode 248. 中心对称数 III(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...

  4. LeetCode 1120. 子树的最大平均值(DFS自底向上)

    文章目录 1. 题目 2. 解题 1. 题目 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值. 子树是树中的任意节点和它的所有后代构成的集合. 树的平均值是树中 ...

  5. LeetCode 1490. 克隆 N 叉树(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 给定一棵 N 叉树的根节点 root ,返回该树的深拷贝(克隆). N 叉树的每个节点都包含一个值( int )和子节点的 ...

  6. LeetCode 733. 图像渲染(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...

  7. LeetCode 1088. 易混淆数 II(回溯/BFS)

    文章目录 1. 题目 2. 解题 2.1 回溯 2.2 BFS 1. 题目 本题我们会将数字旋转 180° 来生成一个新的数字. 比如 0.1.6.8.9 旋转 180° 以后,我们得到的新数字分别为 ...

  8. 数据结构实验之图论三:判断可达性(dfs/bfs)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  9. LeetCode 1293. 网格中的最短路径(DP/BFS)

    1. 题目 给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物). 每一步,您都可以在空白单元格中上.下.左.右移动. 如果您 最多 可以消除 k 个障碍物,请找出从左上角 ( ...

最新文章

  1. 2、ACE-实用生活口语-介绍 Introductions
  2. 第三届蓝桥杯C++本科B组决赛解题报告(更新中)
  3. 【JS】我的JavaScript学习之路(6)
  4. skill alpha protocol
  5. Python小知识 | 这些技能你不会?(三)
  6. softmax简单模型处理Mnist分类问题
  7. ptmalloc,tcmalloc和jemalloc内存分配策略研究
  8. 网易云api如何调用_分析网易云音乐API的经历
  9. CSS实现多栏布局的几种方式
  10. django 1.8 官方文档翻译:7-3 Django管理文档生成器
  11. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
  12. [转]让内网MOSS门户也用域名访问
  13. 大容量内存的电脑提速技巧
  14. 图解TCPIP---第六章---传输层TCPUDP
  15. 薪酬体系怎么设计?看看这家把薪酬公开的公司怎么说
  16. WebView---Android与Javascript交互之入门
  17. 《专业主义》阅读摘要——作者:大前研一
  18. 在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
  19. 五、传输层(三)TCP
  20. 便宜SSL证书购买攻略:comodo,geotrust,rapidssl证书为例

热门文章

  1. OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
  2. bootstrap 图标 由Glyphicons提供
  3. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
  4. jvm垃圾收集器与内存分配策略
  5. 【博客话题】什么样的学生你都能教好——亲爱的魏老师
  6. java 比较器类_高级编程之(Java常用类(Java比较器))
  7. 两次称量误差多少为恒重_双台子100吨二手散装罐回收价格多少
  8. PAT 乙级 1029. 旧键盘(20) Java版
  9. L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT
  10. 观电影《头号玩家》有感