n叉树的深度优先搜索
时间: 2023-12-07 21:37:13 浏览: 39
以下是n叉树的深度优先搜索的两种实现方法:
方法一:递归实现深度优先搜索
```go
func maxDepth(root *Node) int {
if root == nil {
return 0
}
depth := 0
for _, node := range root.Children {
depth = max(depth, maxDepth(node))
}
return depth + 1
}
func max(nums []int) int {
var max int
for _, v := range nums {
if max < v {
max = v
}
}
return max
}
```
方法二:栈实现深度优先搜索
```go
func maxDepth(root *Node) int {
if root == nil {
return 0
}
depth := 0
stack := []*Node{root}
for len(stack) > 0 {
node := stack[len(stack)-1]
stack = stack[:len(stack)-1]
for _, child := range node.Children {
stack = append(stack, child)
}
depth++
}
return depth
}
```