leetcode199Binary Tree Right Side View
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,
1 <--- / \ 2 3 <--- \ \ 5 4 <---
You should return [1, 3, 4]
.
Credits:
Special thanks to @amrsaqr for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
使用队列容器,先将根节点入队,然后循环,在循环中使用内循环,每次遍历一层,将最右侧那个节点的值域保存下来,放入数组中,即可,,,真是非常的简单,一开始根本就没往这块像,思路太窄了。。。
/**
* 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> vt;
if (root == NULL)
{
return vt;
}
queue<TreeNode*> qt;
qt.push(root);
while (!qt.empty())
{
int size = qt.size();
int val;
for (int i = 0; i < size; ++i)
{
TreeNode * temp = qt.front();
val = temp->val;
qt.pop();
if (temp->left)
{
qt.push(temp->left);
}
if (temp->right)
{
qt.push(temp->right);
}
}
vt.push_back(val);
}
return vt;
}
};