🧩Algo 二叉树

199. 二叉树的右视图

难度:🟡 Medium | 标签:树、BFS | 状态:⬜ LeetCode 链接

思路

BFS 每层取最后一个节点。 DFS 也可:根 → 右 → 左 顺序,按层数记录第一次访问。

代码

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int> res;
        if (!root) return res;
        queue<TreeNode*> q;
        q.push(root);
        while (!q.empty()) {
            int sz = q.size();
            for (int i = 0; i < sz; ++i) {
                auto* x = q.front(); q.pop();
                if (i == sz - 1) res.push_back(x->val);
                if (x->left)  q.push(x->left);
                if (x->right) q.push(x->right);
            }
        }
        return res;
    }
};

复杂度

  • 时间 O(n),空间 O(n)

易错 / 回顾

  • 每层最后一个是当前层 size - 1 位置
  • 左视图:取 i == 0 即可
Related · 二叉树