给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
题解:所谓深度,就是树中某节点距离根节点的距离,如图中根节点3的深度为1,那节点7的深度为3,所谓高度,就是树中某节点距离末端叶子结点的距离,如图中7的高度为1,则节点3的高度为3,。有了这个认识,那么二叉树中的最大深度其实也就是根节点的高度。
递归三部曲:
确定递归函数的参数和返回值;
确定终止条件;
确定单层递归的逻辑;
代码如下:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(NULL== root) return 0;
return 1+max(maxDepth(root->left), maxDepth(root->right));
}
};
注意:
虽然知道每递归一次,高度就要+1(注意此时其实计算的是根节点的高度,因为是从递到末端节点才归来逐渐加1),要注意这个1要怎么加,要与递归相联系才能累加。