// Source : https://oj.leetcode.com/problems/binary-tree-level-order-traversal/ // Author : Dean Shi // Date : 2015-05-29 /********************************************************************************** * * 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,#,#,15,7}, * * 3 * / \ * 9 20 * / \ * 15 7 * * return its level order traversal as: * * [ * [3], * [9,20], * [15,7] * ] * * confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ. * * OJ's Binary Tree Serialization: * * The serialization of a binary tree follows a level order traversal, where '#' signifies * a path terminator where no node exists below. * * Here's an example: * * 1 * / \ * 2 3 * / * 4 * \ * 5 * * The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}". * * **********************************************************************************/ /** * 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, index = 0, arr = []) { if (root) { if (!arr[index]) arr[index] = [] arr[index].push(root.val) levelOrder(root.left, index + 1, arr) levelOrder(root.right, index + 1, arr) } return arr };