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;
    }
};

讨论区[https://leetcode.com/problems/maximum-depth-of-binary-tree/discuss/34207/My-code-of-C++-Depth-first-search-and-Breadth-first-search]
范例代码

int maxDepth(TreeNode *root)
{
    return root == NULL ? 0 : max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
}

反思:1、递归调用着眼于调用会回退,注意结束条件的约束,深入理解递归使得代码简洁明了

posted @ 2018-09-20 09:54  Kipper  阅读(84)  评论(0编辑  收藏  举报