二叉树的最大深度
思路:递归思想,最简单
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
left := maxDepth(root.Left) + 1
right := maxDepth(root.Right) + 1
if left > right {
return left
}
return right
}
方法二,树的层序遍历
func maxDepth(root *TreeNode) int {
depth := 0
queue := []*TreeNode{root}
for len(queue) > 0 {
size := len(queue)
for size > 0 {
//出队一个节点,出队时注意,先出前面的元素
head:=queue[0]
queue = queue[1:]
if head.Left!=nil{
queue=append(queue,head.Left)
}
if head.Right!=nil{
queue=append(queue,head.Right)
}
size--
}
depth++
}
return depth
}