天天看點

【Lintcode】1533. N-ary Tree Level Order Traversal題目位址:

題目位址:

https://www.lintcode.com/problem/n-ary-tree-level-order-traversal/description

分層周遊一棵多叉樹。題目中的list的第一個元素即為樹根。借助隊列BFS即可。代碼如下:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Solution {
    public List<List<Integer>> levelOrder(List<DirectedGraphNode> nodes) {
        List<List<Integer>> res = new ArrayList<>();
        if (nodes == null || nodes.isEmpty()) {
            return res;
        }
        
        Queue<DirectedGraphNode> queue = new LinkedList<>();
        queue.offer(nodes.get(0));
        
        while (!queue.isEmpty()) {
            List<Integer> row = new ArrayList<>();
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                DirectedGraphNode cur = queue.poll();
                row.add(cur.label);
                for (DirectedGraphNode neighbor : cur.neighbors) {
                    queue.offer(neighbor);
                }
            }
            
            res.add(row);
        }
        
        return res;
    }
}

class DirectedGraphNode {
    int label;
    List<DirectedGraphNode> neighbors;
    DirectedGraphNode(int x) {
        label = x;
        neighbors = new ArrayList<>();
    }
}
           

時空複雜度 O ( n ) O(n) O(n)。

繼續閱讀