Skip to content

Commit 2ecb1f7

Browse files
committed
✨104.二叉树的最大深度
1 parent 062a0de commit 2ecb1f7

File tree

4 files changed

+77
-24
lines changed

4 files changed

+77
-24
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
- [94.二叉树的中序遍历](leetcode/easy/94.go)
2424
- [100.相同的树](leetcode/easy/100.go)
2525
- [101.对称二叉树](leetcode/easy/101.go)
26-
- [104.二叉树的最大深度](leetcode/easy/104.go)
26+
- [104.二叉树的最大深度](leetcode/easy/t104/solution.go)
2727
- [108.将有序数组转换为二叉搜索树](leetcode/easy/108.go)
2828
- [110.平衡二叉树](leetcode/easy/110.go)
2929
- [111.二叉树的最小深度](leetcode/easy/111.go)

leetcode/easy/104.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

leetcode/easy/t104/solution.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package t104
2+
3+
import "github.com/techoc/leetcodego/leetcode/utils"
4+
5+
/**
6+
* Definition for a binary tree node.
7+
* type TreeNode struct {
8+
* Val int
9+
* Left *TreeNode
10+
* Right *TreeNode
11+
* }
12+
*/
13+
14+
// 记录最大深度
15+
var res int
16+
17+
// 记录遍历到的节点的深度
18+
var depth int
19+
20+
// 104. 二叉树的最大深度
21+
// https://leetcode.cn/problems/maximum-depth-of-binary-tree/
22+
func maxDepth(root *utils.TreeNode) int {
23+
// 初始化最大深度和节点深度 避免全局变量污染
24+
res, depth = 0, 0
25+
traverse(root)
26+
return res
27+
}
28+
29+
// 遍历二叉树
30+
func traverse(root *utils.TreeNode) {
31+
if root == nil {
32+
return
33+
}
34+
// 前序位置 节点深度加一
35+
depth++
36+
// 节点为叶子节点时,更新最大深度
37+
if root.Left == nil && root.Right == nil {
38+
res = max(res, depth)
39+
}
40+
traverse(root.Left)
41+
traverse(root.Right)
42+
// 后序位置 节点深度减一
43+
depth--
44+
}

leetcode/easy/t104/solution_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package t104
2+
3+
import (
4+
"github.com/techoc/leetcodego/leetcode/utils"
5+
"testing"
6+
)
7+
8+
func TestMaxDepth(t *testing.T) {
9+
tests := []struct {
10+
name string
11+
root *utils.TreeNode
12+
want int
13+
}{
14+
{
15+
name: "Case 1",
16+
root: utils.ListToTree([]any{3, 9, 20, nil, nil, 15, 7}),
17+
want: 3,
18+
},
19+
{
20+
name: "Case 2",
21+
root: utils.ListToTree([]any{1, nil, 2}),
22+
want: 2,
23+
},
24+
}
25+
for _, tt := range tests {
26+
t.Run(tt.name, func(t *testing.T) {
27+
if got := maxDepth(tt.root); got != tt.want {
28+
t.Errorf("maxDepth() = %v, want %v", got, tt.want)
29+
}
30+
})
31+
}
32+
}

0 commit comments

Comments
 (0)