0
点赞
收藏
分享

微信扫一扫

35、简单题-LeetCode429.N叉树的层序遍历

非凡兔 2022-03-25 阅读 72

题目描述:

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

N叉树的定义

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;
    }
}

思路

和二叉树一样,就是左右节点变成了 孩子节点的列表

queue中还有 addAll()方法,能将 数组列表的所有值全部添加!

2)还有DFS的方法,未实现

代码

1)BDF

class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        //结果集
        List<List<Integer>> res = new ArrayList<>();
        //队列实现 层序遍历的逻辑
        Queue<Node> queue = new LinkedList<>();
        if(root == null) return res;
        queue.offer(root);
        while(!queue.isEmpty()){
            //每层循环一个数组
            List<Integer> temp = new ArrayList<>();
            //拿到每层的size
            int size = queue.size();
            for(int i = 0;i < size;i++){
                Node node = queue.poll();
                //先将数值加入 这一层的数组中
                temp.add(node.val);
                queue.addAll(node.children);
                //遍历:将该节点的孩子节点添加
                //for(Node n : node.children){
                //    queue.offer(n);
                //}
            }
            res.add(temp);
        }
        return res;
    }
}

2)DFS

举报

相关推荐

0 条评论