429. N 叉树的层序遍历

Posted 一抹阳光&

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了429. N 叉树的层序遍历相关的知识,希望对你有一定的参考价值。

力扣打卡:429. N 叉树的层序遍历

解题思路

这道题目就是二叉树的变形,二叉树的左右子节点变为了一群子结点

  • 写出二叉树的框架
  • 原来 判断添加 左右子节点的位置,改成 判断添加 一群子节点

代码

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        // 这道题目也就是二叉树的变形版本,left和right变为了_children,判断children即可
        List<List<Integer>> ans = new ArrayList<>();
        if(root==null) return ans; // 判断是否为空,因为即使为空,que也会添加

        Queue<Node> que = new LinkedList<>();
        que.offer(root);
        while(!que.isEmpty()){
            int size = que.size(); // 这个变量非常重要,因为记录了同一层的个数
            List<Integer> list = new ArrayList<>();            
            for(int i=0; i<size; i++){
                Node node = que.poll(); // 将先进的节点弹出
                list.add(node.val);
                for(Node n : node.children) que.offer(n); // 原来添加左右子节点,改成了添加一群子节点
            }
            ans.add(list);
        }
        return ans;
    }
}

如果是N叉树的前中后呢?

以上是关于429. N 叉树的层序遍历的主要内容,如果未能解决你的问题,请参考以下文章

429. N叉树的层序遍历

LeetCode--429--N叉树的层序遍历

LeetCode 429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

树429. N叉树的层序遍历

LeetCode 310. 最小高度树(找树中的最长路径) / 796. 旋转字符串 / 429. N 叉树的层序遍历

二叉树层序遍历集合