方法一:递归

思路:

  1. 如果当前节点为空直接返回0
  2. 遍历所有的子节点,对于每一个子节点求出最大的深度,然后动态更新最大的深度
  3. 最后返回遍历完的动态更新保存的最大深度
  1. /**
  2. * Definition for a Node.
  3. * type Node struct {
  4. * Val int
  5. * Children []*Node
  6. * }
  7. */
  8. func maxDepth(root *Node) int {
  9. if root == nil {
  10. return 0
  11. }
  12. ret := 1
  13. temp := 0
  14. for _, child := range root.Children {
  15. temp = maxDepth(child)
  16. if temp + 1 > ret {
  17. ret = temp + 1
  18. }
  19. }
  20. return ret
  21. }