111. 二叉树的最小深度--递归

题目分析:
因为是求的最小深度,一个注意点就是:如果该节点为空,那么其深度为0,如果一个节点的左子树为空,那么可以肯定的是该节点的最小深度一定不是其左子树决定的,同样如果一个节点的右子树为空,那么该节点的最小深度也一定不是其右子树决定的,如果两个子树都为空,那么其最小深度就是1。这样递归判断即可

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int minDepth(TreeNode* root) {
        if(root==NULL){ 
            return 0;
        }
        if(root->left==NULL&&root->right==NULL){    //这个判断要加上,因为后面出现左右子树空的就直接INT_MAX了,再加个一就超出范围了。
            return 1;
        }
        int left=(root->left!=NULL ? minDepth(root->left)+1 : INT_MAX);
        int right=(root->right!=NULL ? minDepth(root->right)+1 : INT_MAX);
        return min(left,right);            //最后返回最小的那个。
    }
};

你可能感兴趣的:(leetcode题目解析)