Skip to main content

Binary Tree Right Side View

Problem statement

Given the root of a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

Example 1:

Input: root = [1,2,3,null,5,null,4]Output: [1,3,4]

Example 2:

Input: root = [1,null,3]Output: [1,3]

Example 3:

Input: root = []Output: []

Constraints:

  • The number of nodes in the tree is in the range [0, 100].
  • -100 <= Node.val <= 100

My solution

/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
// var rightSideView = function(root, levels = 0, results = []) {
// // console.log(levels, results)
// if (!root) {
// return results;
// }

// if (results[levels] === undefined) {
// results[levels] = root.val;
// }

// levels++;
// rightSideView(root.right, levels, results)
// rightSideView(root.left, levels, results)

// return results;
// };

var rightSideView = function(root) {
if (!root) {
return []
}
const queue = [root];
const results = [];

while (queue.length) {
const size = queue.length;
results.push(
queue[size - 1].val
)

for (let i = 0; i < size; i++) {
const current = queue.shift();

if (current.left) {
queue.push(current.left)
}

if (current.right) {
queue.push(current.right)
}
}
}

return results;
}