Problems
Trees
44 remaining tasks
0199 - Binary Tree Right Side View
Easy
/**
 * https://leetcode.com/problems/binary-tree-right-side-view/
 * Time O(N) | Space O(W)
 * @param {TreeNode} root
 * @return {number[]}
 */
 var rightSideView = function(root) {
    const isBaseCase = root === null;
    if (isBaseCase) return [];

    return bfs([ root ]);
};

const bfs = (queue, rightSide = []) => {
    while (queue.length) {
        let prev = null;

        for (let i = (queue.length - 1); 0 <= i; i--) {
            const node = queue.shift();

            prev = node;

            if (node.left) queue.push(node.left);
            if (node.right) queue.push(node.right);
        }

        rightSide.push(prev.val);
    }

    return rightSide;
}

/**
 * https://leetcode.com/problems/binary-tree-right-side-view/
 * Time O(N) | Space O(H)
 * @param {TreeNode} root
 * @return {number[]}
 */
 var rightSideView = function(root, level = 0, rightSide = []) {
    const isBaseCase = root === null;
    if (isBaseCase) return rightSide;

    const isLastNode = level === rightSide.length
    if (isLastNode) rightSide.push(root.val);

    return dfs(root, level, rightSide)
}

const dfs = (root, level, rightSide) => {
    if (root.right) rightSideView(root.right, (level + 1), rightSide);
    if (root.left) rightSideView(root.left, (level + 1), rightSide);

    return rightSide
}