题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
提示:
节点总数 <= 10000
注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
解法一:递归
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func max(nums ...int) int {
res := nums[0]
for _, val := range nums {
if val > res {
res = val
}
}
return res
}
func maxDepth(root *TreeNode) int {
if nil == root {
return 0
}
return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}
|
解法二:BFS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
func maxDepth(root *TreeNode) int {
if nil == root {
return 0
}
var queue []*TreeNode
queue = append(queue, root)
ans := 0
for len(queue) > 0 {
cnt := len(queue)
for cnt > 0 {
cur := queue[0]
queue = queue[1:]
if cur.Left != nil {
queue = append(queue, cur.Left)
}
if cur.Right != nil {
queue = append(queue, cur.Right)
}
cnt--
}
ans++
}
return ans
}
|