leetcode 104-二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
//递归求解
int ans;

void deep(struct TreeNode* root, int n){
    if(root==NULL){
        return ;
    }
    if( n + 1 > ans)
        ans = n +1;
    deep(root->left, n + 1);
    deep(root->right, n + 1);
}

int maxDepth(struct TreeNode* root){
    ans = 0;//切记,不能把这句放在外边,因为在多组测试用例的情况下,若上一组的深度大于这组,则返回的结果就是上组的结果;
    deep(root, 0);
    return ans;
}

写的比较麻烦,大佬写的巨简单,思想是一样的,都是递归求解,展示下:

int maxDepth(struct TreeNode *root) {
    if (root == NULL) return 0;
    return fmax(maxDepth(root->left), maxDepth(root->right)) + 1;
}

你可能感兴趣的:(#,leetcode,算法,算法,leetcode,数据结构)