给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6] 输出:3
输入: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]
输出:5
深度优先遍历
func maxDepth(root *Node) int {
if root == nil{
return 0
}
depth := make([]int, 0)
for _, node := range root.Children{
depth = append(depth, maxDepth(node))
}
return max(depth)+1
}
func max(nums []int)int{
var max int
for _, v := range nums{
if max < v{
max = v
}
}
return max
}
层次遍历求深度
func maxDepth(root *Node) int {
var depth int
if root == nil{
return depth
}
queue := make([]*Node, 0)
queue = append(queue, root)
for len(queue) > 0{
l := len(queue)
depth ++
for l >0{
l --
node := queue[0]
queue = queue[1:]
queue = append(queue, node.Children...)
}
}
return depth
}