funcmaxDepth(root *TreeNode)int{//空直接返回if root ==nil{return0}var(//存储需要遍历的节点
tmp =make([]*TreeNode,0)//保存最大深度
res =0)
tmp =append(tmp, root)forlen(tmp)>0{len:=len(tmp)for_,v :=range tmp {if v.Left !=nil{
tmp =append(tmp,v.Left)}if v.Right !=nil{
tmp =append(tmp,v.Right)}}
tmp = tmp[len:]
res ++}return res
}
方案二,深度优先
funcmaxDepth(root *TreeNode)int{if root ==nil{return0}var res =0dfs(root,0,&res)return res
}funcdfs(root *TreeNode, lever int, res *int){if root.Left ==nil&& root.Right ==nil{if*res < lever+1{*res = lever +1}return}if root.Left !=nil{dfs(root.Left, lever +1, res)}if root.Right !=nil{dfs(root.Right, lever +1, res)}}