199. 二叉樹的右檢視

saulstavo發表於2024-12-08

問題描述

給定一個二叉樹的 根節點 root,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

bfs樹的層次遍歷

同其他的一些題,使用for迴圈區分該層的結點,並記錄每層的最後一個結點為答案即可。

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int> res;
        queue<TreeNode*> q;
        if (root != nullptr) {
            q.push(root);
        }
        while(!q.empty()) {
            int layer_size = q.size();
            for (int i = 0; i < layer_size; i++) {
                TreeNode* t = q.front();
                q.pop();
                if (t->left) {
                    q.push(t->left);
                } if (t->right) { // 這裡不能else if 要考慮左右子節點同時存在的情況
                    q.push(t->right);
                }
                if (i == layer_size-1) {
                    res.push_back(t->val);
                }
            }
        }
        return res;
    }
};

相關文章