559. Maximum Depth of N-ary Tree

package LeetCode_559

import java.util.*

/**
 * 559. Maximum Depth of N-ary Tree
 * https://leetcode.com/problems/maximum-depth-of-n-ary-tree/description/
 *
 * Given a n-ary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).
 * */
class Node(var `val`: Int) {
    var children: List<Node?> = listOf()
}

class Solution {
    /**
     * solution: BFS, Time complexity:O(n), Space complexity:O(n)
     * */
    fun maxDepth(root: Node?): Int {
        if (root == null) {
            return 0
        }
        var res = 0
        val queue = LinkedList<Node>()
        queue.offer(root)
        while (queue.isNotEmpty()){
            res++
            val size = queue.size
            for (i in size-1 downTo 0){
                val cur = queue.poll()
                if (cur!=null){
                    for (item in cur.children){
                        queue.offer(item)
                    }
                }
            }
        }
        return res
    }
}

 

posted @ 2020-06-12 13:45  johnny_zhao  阅读(135)  评论(0编辑  收藏  举报