题目描述
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
思路
层序遍历,选择每层的最后一个。
代码
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> result;
vector<TreeNode*> queue;
if(!root) return result;
queue.push_back(root);
queue.push_back(nullptr);
int i=0;
while(i<queue.size()-1) {
if(!queue[i])
queue.push_back(nullptr);
else{
if(queue[i]->left) queue.push_back(queue[i]->left);
if(queue[i]->right) queue.push_back(queue[i]->right);
}
i++;
}
i=0;
while(i<queue.size()-1) {
if(!queue[i+1])
result.push_back(queue[i]->val);
i++;
}
return result;
}
};