难度简单1329
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7返回它的最大深度 3 。
思路:
要求最大深度,拆分为子问题,也就是求左右子树的最大深度,依次递归下去。
步骤:
- 若该节点为空,则直接返回0
- 若不为空,则递归到该节点的左子树和右子树,直到他们递归到了叶子节点
- 这个时候进行两个节点的比较大小,取大的那个,然后加一返回上一层
//写法一:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == nullptr)
return 0;
//将左右子树的最大值进行比较,取大的那个,然后返回+1的结果
int leftmax = maxDepth(root->left);
int rightmax = maxDepth(root->right);
return leftmax > rightmax ? leftmax + 1 : rightmax + 1;
}
};//写法二:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == nullptr)
return 0;
//将左右子树的最大值进行比较,取大的那个,然后返回+1的结果
int Max = max(maxDepth(root->left), maxDepth(root->right));
return Max + 1;
}
};