LeetCode Binary Tree Right Side View (DFS/BFS)
题意:
给一棵二叉树,要求收集每层的最后一个节点的值。按从顶到底装进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)相关推荐
- LeetCode Binary Tree Right Side View(搜索)
问题:给出一个二叉树,要求输出右视图 思路:因为要求输出右视图.可以考虑使用深度优先搜索或者 广度优先搜索. 使用深度优先搜索时,以非递归形式,将左右子树入栈,同时使用哈希表记录深度与对应右视图的值. ...
- LeetCode 226. 翻转二叉树(DFS BFS)
文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...
- LeetCode 248. 中心对称数 III(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...
- LeetCode 1120. 子树的最大平均值(DFS自底向上)
文章目录 1. 题目 2. 解题 1. 题目 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值. 子树是树中的任意节点和它的所有后代构成的集合. 树的平均值是树中 ...
- LeetCode 1490. 克隆 N 叉树(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 给定一棵 N 叉树的根节点 root ,返回该树的深拷贝(克隆). N 叉树的每个节点都包含一个值( int )和子节点的 ...
- LeetCode 733. 图像渲染(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...
- LeetCode 1088. 易混淆数 II(回溯/BFS)
文章目录 1. 题目 2. 解题 2.1 回溯 2.2 BFS 1. 题目 本题我们会将数字旋转 180° 来生成一个新的数字. 比如 0.1.6.8.9 旋转 180° 以后,我们得到的新数字分别为 ...
- 数据结构实验之图论三:判断可达性(dfs/bfs)
Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...
- LeetCode 1293. 网格中的最短路径(DP/BFS)
1. 题目 给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物). 每一步,您都可以在空白单元格中上.下.左.右移动. 如果您 最多 可以消除 k 个障碍物,请找出从左上角 ( ...
最新文章
- 2、ACE-实用生活口语-介绍 Introductions
- 第三届蓝桥杯C++本科B组决赛解题报告(更新中)
- 【JS】我的JavaScript学习之路(6)
- skill alpha protocol
- Python小知识 | 这些技能你不会?(三)
- softmax简单模型处理Mnist分类问题
- ptmalloc,tcmalloc和jemalloc内存分配策略研究
- 网易云api如何调用_分析网易云音乐API的经历
- CSS实现多栏布局的几种方式
- django 1.8 官方文档翻译:7-3 Django管理文档生成器
- 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
- [转]让内网MOSS门户也用域名访问
- 大容量内存的电脑提速技巧
- 图解TCPIP---第六章---传输层TCPUDP
- 薪酬体系怎么设计?看看这家把薪酬公开的公司怎么说
- WebView---Android与Javascript交互之入门
- 《专业主义》阅读摘要——作者:大前研一
- 在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
- 五、传输层(三)TCP
- 便宜SSL证书购买攻略:comodo,geotrust,rapidssl证书为例
热门文章
- OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
- bootstrap 图标 由Glyphicons提供
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
- jvm垃圾收集器与内存分配策略
- 【博客话题】什么样的学生你都能教好——亲爱的魏老师
- java 比较器类_高级编程之(Java常用类(Java比较器))
- 两次称量误差多少为恒重_双台子100吨二手散装罐回收价格多少
- PAT 乙级 1029. 旧键盘(20) Java版
- L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT
- 观电影《头号玩家》有感