104. 二叉树的最大深度
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
提示:
- 树中节点的数量在
[0, 104]
区间内。 -100 <= Node.val <= 100
解题思路
深度优先搜索:
利用深度优先搜索方法,采用递归的方式不断递归,递归搜索出左子树和右子树的最大深度l和r,最后二叉树的最大深度即为左右子树中最大深度加1。
代码
C语言
int maxDepth(struct TreeNode* root) {
if(root == NULL){
return 0;
}
int left_depth = maxDepth(root->left);
int right_depth = maxDepth(root->right);
return left_depth > right_depth?left_depth+1:right_depth + 1;
}
Java
class Solution {
public int maxDepth(TreeNode root) {
if(root == null){
return 0;
}
int left_depth = maxDepth(root.left);
int right_depth = maxDepth(root.right);
return left_depth > right_depth?left_depth + 1:right_depth + 1;
}
}
Python
class Solution:
def maxDepth(self, root):
if root is None:
return 0
else:
left_depth = self.maxDepth(root.left)
right_depth = self.maxDepth(root.right)
return max(left_depth, right_depth) + 1