class TreeNode { val: number; left: TreeNode | null; right: TreeNode | null; constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { this.val = val === undefined ? 0 : val; this.left = left === undefined ? null : left; this.right = right === undefined ? null : right; } } function rightSideView(root: TreeNode | null): number[] { const result: number[] = []; if (!root) return result; const queue: (TreeNode | null)[] = [root]; while (queue.length > 0) { const size = queue.length; for (let i = 0; i < size; i++) { const node = queue.shift()!; if (node.left) queue.push(node.left); if (node.right) queue.push(node.right); if (i === size - 1) result.push(node.val); } } return result; } // Tree structure: // 1 // / \ // 2 3 // \ \ // 5 4 const root = new TreeNode(1, new TreeNode(2, null, new TreeNode(5)), new TreeNode(3, null, new TreeNode(4)) ); console.log(rightSideView(root));
The right side view shows the last node at each level when traversing from left to right.
Level 1: Node 1
Level 2: Node 3 (right child of 1)
Level 3: Node 4 (right child of 3)
The right side view includes only the rightmost node at each depth level, as seen from the right side.
function rightSideView(root: TreeNode | null): number[] {
const result: number[] = [];
if (!root) return result;
const queue: (TreeNode | null)[] = [root];
while (queue.length > 0) {
const size = queue.length;
for (let i = 0; i <= size; i++) {
const node = queue.shift()!;
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
if (i === size - 1) result.push(node.val);
}
}
return result;
}The for loop uses i <= size, which runs one extra time than the queue length.
This causes queue.shift() to return undefined, leading to a runtime error when accessing node.left.
const root = new TreeNode(10, new TreeNode(20, new TreeNode(30, new TreeNode(40), null), null), null ); console.log(rightSideView(root));
Each level has only one node, so the right side view includes all nodes in the path.
A complete binary tree of height 4 has 4 levels.
The right side view shows exactly one node per level, so 4 nodes total.
