【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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章