LeetCode 104. 二叉树的最大深度
题目链接:LeetCode 104. 二叉树的最大深度
题意:
给定一个二叉树,找出其最大深度。
解题思路:
1. 递归法:
对于递归的解法,采用先序或者后序都是可以的。
后序递归代码如下:
func maxDepth(root *TreeNode) int {
var res int
if root == nil {
return 0
}
Left:=maxDepth(root.Left)
Right:=maxDepth(root.Right)
res++
res += max(Left,Right)
return res
}
func max(a, b int)int{
if a > b{
return a
}
return b
}
2.迭代法:
对于迭代的写法,最合适的就是层次遍历,因为在遍历过程中,每遍历一层,二叉树的深度加 1
迭代代码如下:
func maxDepth(root *TreeNode) int {
if root == nil{
return 0
}
var res int
var query []*TreeNode
query = append(query,root)
for len(query) > 0{
res++
n:= len(query)
for n > 0 {
n--
node := query[0]
query = query[1:]
if node.Left != nil{
query = append(query,node.Left)
}
if node.Right != nil{
query = append(query,node.Right)
}
}
}
return res
}