给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <—
/
2 3 <—
\
5 4 <—
解题思路:
本题主要做到对二叉树进行层次遍历,取每个层的最右端的元素即可。
C++代码如下:
/**
- 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:
vectorrightSideView(TreeNode root)
{
vectorres;
queue<TreeNode*>Q;
if(root)Q.push(root);
while(!Q.empty())
{
int size=Q.size();//每一行的个数
TreeNode* temp;
for(int i=1;i<=size;i++)
{
temp=Q.front();
if(temp->left)Q.push(temp->left);
if(temp->right)Q.push(temp->right);
Q.pop();
if(i==size)res.push_back(temp->val);
}
}
return res;
}
};