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

    示例 1:
    image.png
    输入:root = [3,9,20,null,null,15,7]
    输出:[[3],[9,20],[15,7]]
    示例 2:

    输入:root = [1]
    输出:[[1]]
    示例 3:

    输入:root = []
    输出:[]

    1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val, left, right) {
    4. * this.val = (val===undefined ? 0 : val)
    5. * this.left = (left===undefined ? null : left)
    6. * this.right = (right===undefined ? null : right)
    7. * }
    8. */
    9. /**
    10. * @param {TreeNode} root
    11. * @return {number[][]}
    12. */
    13. var levelOrder = function (root) {
    14. // 1.记录层级
    15. // 2.并将每层数据放在相同层级数组中
    16. // 3.逐层遍历,可以用广度优先
    17. if (!root) { return [] }
    18. const stack = [[root, 0]]; // 记录层级,默认为0
    19. let res = [];
    20. while (stack.length) {
    21. // 抛出栈头
    22. const [n, l] = stack.shift();
    23. // 层级记录了,那么就需要把值根据层级放入数组
    24. if (!res[l]) {
    25. res.push([n.val])
    26. } else {
    27. res[l].push(n.val)
    28. }
    29. if (n.left) { stack.push([n.left, l + 1]) };
    30. if (n.right) { stack.push([n.right, l + 1]) }
    31. }
    32. return res
    33. };

    image.png