199. Binary Tree Right Side View


Este reto consiste en identificar el último nodo de cada nivel de un árbol binario, simulando lo que verías parado a su derecha. Para resolverlo, utilicé un algoritmo de Recorrido por Niveles (BFS), capturando únicamente el elemento final de cada fila para obtener la perspectiva correcta.

#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> ans;
if(root == nullptr) return {};
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
int qSize = q.size();
for(int i = 0; i < qSize; ++i){
TreeNode* current = q.front();
q.pop();
if(current->left)
q.push(current->left);
if(current->right)
q.push(current->right);
if(i == qSize - 1)
ans.push_back(current->val);
}
}
return ans;
}
};