【leetcode】二叉树的最小深度

 

void recursion(struct TreeNode* root, int* minDeep, int curDeep){
    curDeep++;
    if (curDeep>=*minDeep) return;
    if (!root->left && !root->right)
    {
        if (curDeep<*minDeep)
            *minDeep=curDeep;
        return;
    }
    if (root->left) recursion(root->left,minDeep,curDeep);    
    if (root->right) recursion(root->right,minDeep,curDeep);
}

int minDepth(struct TreeNode* root){
    if (!root) return 0;
    int minDeep=100000;
    recursion(root,&minDeep,0);
    return minDeep;
}

 

#define min(A, B) ((A) < (B) ? (A) : (B))
int minDepth(struct TreeNode* root){
    if (root == NULL) {
        return 0;
    }
    int left = minDepth(root->left);
    int right = minDepth(root->right);

    return (left && right) ? min(left, right) + 1 : left + right + 1;
}

 

posted @ 2020-11-09 11:37  温暖了寂寞  阅读(78)  评论(0编辑  收藏  举报