# 题目链接
# 题目描述
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

# 解题思路
考虑以下几种情况:
- 如果二叉树为空,深度为 0;
- 如果二叉树只有根节点,深度为 1;
- 如果二叉树的根节点只有左子树,深度为左子树的深度加 1;
- 如果二叉树的根节点只有右子树,深度为右子树的深度加 1;
- 如果二叉树的根节点既有左子树又有右子树,深度为左右子树深度的最大者再加 1。
说明
解题思路中的加 1,是因为根节点深度为 1。
/* go 语言没有三目运算符 */
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15