559 N叉树的最大深度-简单
题目:
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
解题思路
// date 2024/02/20
// 解法1,递归
/**
* Definition for a Node.
* type Node struct {
* Val int
* Children []*Node
* }
*/
func maxDepth(root *Node) int {
ans := 0
var dfs func(root *Node) int
dfs = func(root *Node) int {
if root == nil {
return 0
}
if len(root.Children) == 0 {
if ans < 1 {
ans = 1
}
return 1
}
temp := 0
for i := 0; i < len(root.Children); i++ {
res := dfs(root.Children[i])
if res > temp {
temp = res
}
}
temp++
if temp > ans {
ans = temp
}
return temp
}
dfs(root)
return ans
}
// 解法2,bfs,层序遍历
func maxDepth(root *Node) int {
if root == nil {
return 0
}
if len(root.Children) == 0 {
return 1
}
ans := 0
queue := make([]*Node, 0, 16)
queue = append(queue, root)
for len(queue) != 0 {
n := len(queue)
for i := 0; i < n; i++ {
cur := queue[i]
for j := 0; j < len(cur.Children); j++ {
if cur.Children[j] != nil {
queue = append(queue, cur.Children[j])
}
}
}
queue = queue[n:]
ans++
}
return ans
}
最后更新于