LeetCode199.二叉樹的右檢視

Tomorrowland_D發表於2024-07-24

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;
    }
};

相關文章