199. Binary Tree Right Side View
2016-04-21 15:51
399 查看
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
For example:
Given the following binary tree,
You should return
【思路】广度遍历,从右到左,vector中只保存树每层最右边的一个节点。
For example:
Given the following binary tree,
1 <--- / \ 2 3 <--- \ \ 5 4 <---
You should return
[1, 3, 4].
【思路】广度遍历,从右到左,vector中只保存树每层最右边的一个节点。
/** * 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> result; if(NULL==root) return result; queue<pair<TreeNode*, int>> q; q.push(make_pair(root,0)); result.push_back(root->val); while(!q.empty()) { auto f = q.front(); q.pop(); if(f.first->right) { q.push(make_pair(f.first->right, f.second +1)); } if(f.first->left) { q.push(make_pair(f.first->left, f.second+1)); } if(!q.empty() && f.second != q.front().second) { result.push_back(q.front().first->val); } } return result; } };
相关文章推荐
- Servlet------文件的下载
- Mysql之各种各样的函数啦
- 如何连接开发环境和生产环境?
- java获取propertites文件
- ACM_程序设计竞赛:贪心算法:字典最小序
- Windows系统下使用Sublime搭建nodejs环境
- 模板中的标签、过滤器
- [改善Java代码]断言绝对不是鸡肋
- 解决方案的进步
- 多线程并发
- Android 抽象布局介绍和简单的使用
- 学习Java开源框架前你应该了解的
- fread和fwrite
- Java 泛型定义在接口上
- Hibernate一对多映射配置
- Notepad++连接QQ浏览器
- TomCat的工作原理和端口理解
- 06-图2 Saving James Bond - Easy Version (25分)
- 输出js对象的所有属性值
- Google code: Why 'Everything up-to-date' when pushing (git)