LeetCode題目連結:https://leetcode.cn/problems/binary-tree-right-side-view/description/
題目敘述:
給定一個二叉樹的 根節點 root,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。
示例 1:
輸入: [1,2,3,null,5,null,4]
輸出: [1,3,4]
示例 2:
輸入: [1,null,3]
輸出: [1,3]
示例 3:
輸入: []
輸出: []
提示:
二叉樹的節點個數的範圍是 [0,100]
-100 <= Node.val <= 100
思路:
這道題依然和二叉樹的層序遍歷思路差不多,如果不會二叉樹的層序遍歷的話,可以看看我之前的文章,裡面詳細講解了如何實現二叉樹的層序遍歷!
連結:https://www.cnblogs.com/Tomorrowland/articles/18314740
這道題不需要我們設立current陣列,只要遍歷每一層時,判斷當前是否是遍歷到第size-1次即可。如果是size-1次,證明遍歷到了每一層的最右邊,這就是我們要求的元素:
AC程式碼如下:
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> result;
if(root==NULL) return result;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
int size=que.size();
for(int i=0;i<size;i++){
TreeNode *node=que.front();
que.pop();
if(i==size-1) result.push_back(node->val);
if(node->left!=NULL) que.push(node->left);
if(node->right!=NULL) que.push(node->right);
}
}
return result;
}
};