- Binary Tree Level Order Traversal
Given the root
of a binary tree, return the level order traversal of its nodes’ values. (i.e., from left to right, level by level).
Example 1:
**Input:** root = [3,9,20,null,null,15,7]
**Output:** [[3],[9,20],[15,7]]
Example 2:
**Input:** root = [1]
**Output:** [[1]]
Example 3:
**Input:** root = []
**Output:** []
Constraints:
- The number of nodes in the tree is in the range
[0, 2000]
. -1000 <= Node.val <= 1000
Idea
* 借助于栈,实现BSF
* 借助递归,实现DSF
/**
* 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 levelOrder = function(root) {
let res = []
if(!root){
return res
}
let queue = []
queue.push(root)
while(queue.length){
let curr = []
let len = queue.length;
for(let i=0; i< len; i++){
let e = queue.shift()
curr.push(e.val)
if(e.left){
queue.push(e.left)
}
if(e.right){
queue.push(e.right)
}
}
res.push(curr)
}
return res;
};
/**
* 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 levelOrder = function(root,level=0,res=[]) {
if(root){
if(res.length < level + 1){
res.push([])
}
res[level].push(root.val)
levelOrder(root.left,level+1,res)
levelOrder(root.right,level+1,res)
}
return res;
};