题目链接:
题目描述:
站在一个二叉树右边看,记录从上到下看到的数。
1 <---
/ \
2 3 <---
\ \
5 4 <---
return [1, 3, 4]
题目分析:
找出每一层最右边的节点元素。层序遍历的变形。我是直接按之前LeetCode107.Binary Tree Level Order Traversal II 的思路来写的,利用递归遍历实现层序遍历。再将每一层的第一个存起来,最后返回。
代码:
class Solution {
public:
vector<vector<int>> ans;
void levelTraversal(TreeNode* root,int layer){
if(root!=NULL){
if(ans.size()==layer){
vector<int> v;
ans.push_back(v);
}
ans[layer].push_back(root->val);
levelTraversal(root->right,layer+1);
levelTraversal(root->left,layer+1);
}
}
vector<int> rightSideView(TreeNode* root) {
levelTraversal(root,0);
vector<int> result;
for(int i=0;i<ans.size();i++){
result.push_back(ans[i][0]);
}
return result;
}
};