【LeetCode 0102】【BSF/DSF】二叉树的层级遍历

发布于:2024-07-13 ⋅ 阅读:(147) ⋅ 点赞:(0)
  1. 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;
};

网站公告

今日签到

点亮在社区的每一天
去签到