102. Binary Tree Level Order Traversal


Problem

https://leetcode.com/problems/binary-tree-level-order-traversal/

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]

Solution

BFS

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if (!root) { return [] }

    var result = [[]]
    var level = 0
    var queue = [root, null]

    while (queue.length > 1) {
        let node = queue.shift()
        if (node) {
            result[level].push(node.val)
            if (node.left) { queue.push(node.left) }
            if (node.right) { queue.push(node.right) }
        } else {
            queue.push(null)
            result[++level] = []
        }
    }

    return result
};

DFS

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if (!root) { return [] }

    var result = []

    function dfs(node, level, result) {
        if (!result[level]) {
            result[level] = [node.val]
        } else {
            result[level].push(node.val)
        }
        if (node.left) {
            dfs(node.left, level+1, result)
        }
        if (node.right) {
            dfs(node.right, level+1, result)
        }
    }

    dfs(root, 0, result)

    return result
};

results matching ""

    No results matching ""