Typescript-Algorithms
    Preparing search index...

    Variable binary_tree_level_order_traversalConst

    binary_tree_level_order_traversal: (root: null | TreeNode) => number[][] = levelOrder

    102.二叉树的层序遍历

    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。


    示例1

    输入: root = [3,9,20,null,null,15,7]

    输出: [[3],[9,20],[15,7]]


    输入: root = [1]

    输出: [[1]]


    输入: root = []

    输出: []


    • 树中节点数目在范围 [0, 2000]
    • -1000 <= Node.val <= 1000

    Type declaration

      • (root: null | TreeNode): number[][]
      • Definition for a binary tree node. class TreeNode { val: number left: TreeNode | null right: TreeNode | null constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } }

        Parameters

        • root: null | TreeNode

        Returns number[][]

    广度优先搜索(BFS),就是按照层级从上到下,从左到右遍历二叉树。通过队列实现,我们将每一层的节点放入队列中,通过依次队列遍历每一层节点,并记录每一层节点值。然后将下一层节点放入队列中,重复这个过程,直到队列为空。

    /**
    * Definition for a binary tree node.
    * class TreeNode {
    * val: number
    * left: TreeNode | null
    * right: TreeNode | null
    * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    * this.val = (val===undefined ? 0 : val)
    * this.left = (left===undefined ? null : left)
    * this.right = (right===undefined ? null : right)
    * }
    * }
    */

    function levelOrder(root: TreeNode | null): number[][] {
    const ans: number[][] = [];
    const queue: TreeNode[] = [];

    if (root) {
    queue.push(root);
    }

    while (queue.length > 0) {
    const n = queue.length;
    const path: number[] = [];

    for (let i = 0; i < n; i++) {
    const node = queue.shift()!;
    path.push(node.val);

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

    ans.push([...path]);
    }

    return ans;
    };