1、题目
2、题解
首先的思路在于树的最大深度即整棵树的层数,这要是给的是数组,直接2^n=数组长度,解出 n 就好了,可惜了给的又是指针,那就再一次借助队列的结构对这棵树层序遍历好了,但注意:
1)当且仅当该节点不为叶子节点时才将其加入队列,否则计算当前层数并更新最大长度。
最后实现代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxDepth(root *TreeNode) int {
q := []*TreeNode{root}
maxLayerNum := 0
if root == nil{
return 0
}
l:=len(q)
for ; l!=0; l=len(q){
// fmt.Println(q)
maxLayerNum++
for i:=0; i<l; i++{
p := q[0]
q = q[1:]
if p.Left!=nil{
q=append(q, p.Left)
}
if p.Right!=nil{
q=append(q, p.Right)
}
}
}
return maxLayerNum
}
提交结果如下