# Leetcode162: Binary Tree Right Side View

167人阅读 评论(0)

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].

/**
* 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> res;
if(!root)
return res;
queue<TreeNode*> q1;
q1.push(root);
vector<int> temp;
while(!q1.empty())
{
queue<TreeNode*> q2;
temp.clear();
while(!q1.empty())
{
TreeNode* node = q1.front();
q1.pop();
temp.push_back(node->val);
if(node->left)
{
q2.push(node->left);
}
if(node->right)
{
q2.push(node->right);
}
}
q1 = q2;
res.push_back(temp[temp.size()-1]);
}
return res;
}
};

/**
* 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> res;
if(!root)
return res;
queue<TreeNode*> q1;
q1.push(root);
TreeNode* node;
while(!q1.empty())
{
queue<TreeNode*> q2;
while(!q1.empty())
{
node = q1.front();
q1.pop();
if(node->left)
{
q2.push(node->left);
}
if(node->right)
{
q2.push(node->right);
}
}
q1 = q2;
res.push_back(node->val);
}
return res;
}
};

个人资料
等级：
访问量： 8万+
积分： 2526
排名： 1万+
个人主页
最新评论