104.E 二叉树的最大深度
Problem: 104. 二叉树的最大深度
思路
思路1:深度优先遍历。ans = max(l, r) + 1
思路2:广度优先遍历。层次遍历,每遍历一行,深度加一。
Code
代码1:
func maxDepthV1(root *TreeNode) int {
if root == nil {
return 0
}
leftDepth := maxDepthV1(root.Left)
rightDepth := maxDepthV1(root.Right)
if leftDepth > rightDepth {
return leftDepth + 1
} else {
return rightDepth + 1
}
}
代码2:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
ans := 0
queue := []*TreeNode{root}
for len(queue) > 0 {
size := len(queue)
for size > 0 {
node := queue[0]
queue = queue[1:]
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
size--
}
ans++
}
return ans
}
Last updated
Was this helpful?