天天看點

LeetCode刷題進階之N叉樹的層序周遊 (429)

一、題目

LeetCode刷題進階之N叉樹的層序周遊 (429)

示範示例:

LeetCode刷題進階之N叉樹的層序周遊 (429)

輸入:root = [1,null,3,2,4,null,5,6]

輸出:[[1],[3,2,4],[5,6]]

LeetCode刷題進階之N叉樹的層序周遊 (429)

輸入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]

輸出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

二、測試代碼

/*
// 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) {
        List<List<Integer>> list1=new ArrayList<List<Integer>>();
        Queue<Node> queue=new LinkedList<>();
        if(root==null){
            return list1;
        }
        queue.offer(root);
        while(!queue.isEmpty()){
            List<Integer> list2=new ArrayList<>();
            int length=queue.size();
            for(int i=0;i<length;i++){
                Node temp=queue.poll();
                list2.add(temp.val);
                queue.addAll(temp.children);//List.addAll()傳入一個List,将此List中的所有元素加入到目前List中
            }
            list1.add(list2);
        }
        return list1;
    }
}
           

三、運作情況

LeetCode刷題進階之N叉樹的層序周遊 (429)

傳送門:二叉樹的層次周遊