104.二叉树的最大深度
题目:[https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/]
思路:遍历二叉树,并记录访问节点的深度,与已知最大节点比较。返回最大值
class Solution {
public:
void finddetpth(TreeNode *root,int de,int &max){
++de;//当前节点深度
if (root->left==NULL&root->right==NULL) {//当前节点是否是子节点
max=de>max? de:max;//是,与已知最大节点进行比较,超过则覆盖
}
if (root->left!=NULL) {//当前节点有left子吗
finddetpth(root->left,de,max);//递归调用
}
if (root->right!=NULL) {//当前节点有right子吗
finddetpth(root->right,de,max);//递归调用
}
}
int maxDepth(TreeNode* root) {
if (root==NULL) {//空树无深度
return 0;
}
int max;
finddetpth(root, 0, max);
return max;
}
};
int maxDepth(TreeNode *root)
{
return root == NULL ? 0 : max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
}
反思:1、递归调用着眼于调用会回退,注意结束条件的约束,深入理解递归使得代码简洁明了