输入:给定一棵二叉树的根节点 root。
要求:二叉树的右侧看过去,按从上到下的顺序,返回每一层“能看到的节点值”。
输出:一个 vector<int>,按层从上往下,记录每层的最右节点。
思路:直接用 层序遍历(BFS):
-
每一层用队列处理
-
遍历本层所有节点
-
记录最后一个节点的值
复杂度:
时间复杂度:O(n)
空间复杂度:O(n)
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
if (!root) return {};
queue<TreeNode*> q;
q.push(root);
vector<int> ans;
while (!q.empty()) {
int n = q.size();
TreeNode* node = nullptr;
for (int i = 0; i < n; i++) {
node = q.front();
q.pop();
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
ans.push_back(node->val); // 本层最后一个节点
}
return ans;
}
};
722

被折叠的 条评论
为什么被折叠?



