leetcode429-N叉树的层序遍历

leetcode 429

思路

这里n叉树的层序遍历和二叉树的层序遍历非常相似,可以参考博文:二叉树的层序遍历

N叉树对比二叉树就是有多个孩子节点,二叉树是有一个left和一个right节点,n叉树因为有多个子节点,所以通过children来存放所有的孩子节点,然后在层级遍历的时候,要遍历children中的所有元素入队列

可能一开始看到题目的时候不太明白构造出来的二叉树和N叉树的一个数据结构,下面模拟一下构造逻辑

二叉树的构造
js 复制代码
class TreeNode {
  constructor(val) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

const root = new TreeNode(5)
root.left = new TreeNode(4)
root.right = new TreeNode(6)
root.left.left = new TreeNode(1)
root.left.right = new TreeNode(2)
N叉树的构造
js 复制代码
class TreeNode {
  constructor(val) {
    this.val = val;
    this.children = null
  }
}

const root = new TreeNode(1)
root.children = [new TreeNode(3),new TreeNode(2),new TreeNode(4)]
root.children[0].children = [new TreeNode(5),new TreeNode(6)]

实现

js 复制代码
var levelOrder = function (root) {
    if (!root) return [];
    let result = [], queue = [root];
    while (queue.length) {
        let len = queue.length;
        let arr = [];
        while (len--) {
            let node = queue.shift();
            arr.push(node.val);
            if (node.children) {
                for (const item of node.children) {
                    queue.push(item)
                }
            }
        }
        result.push(arr)
    }
    return result
};
相关推荐
IT猿手2 分钟前
智能优化算法:雪橇犬优化算法(Sled Dog Optimizer,SDO)求解23个经典函数测试集,MATLAB
开发语言·前端·人工智能·算法·机器学习·matlab
扫地僧00914 分钟前
Java 面试题及答案整理,最新面试题
java·jvm·算法·面试
一只_程序媛20 分钟前
【leetcode hot 100 128】最长连续序列
算法·leetcode·职场和发展
做程序员的第一天1 小时前
leetcode704------二分法查找有序数组中特定的值
数据结构·算法
DARLING Zero two♡1 小时前
【初阶数据结构】森林里的树影 “堆” 光:堆
c语言·数据结构·c++··
小雅痞2 小时前
C语言--正序、逆序输出为奇数的位。
c语言·算法
橘猫0.o2 小时前
【C语言】结构体字节对齐
linux·c语言·前端·数据结构·单片机·嵌入式硬件·算法
请卧龙先生出山3 小时前
c++day5
开发语言·c++·算法
Star Patrick3 小时前
算法训练(leetcode)二刷第三十七天 | *300. 最长递增子序列、674. 最长连续递增序列、*718. 最长重复子数组
算法·leetcode·职场和发展
孑么3 小时前
力扣 颜色分类
java·数据结构·算法·leetcode·排序算法