Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

求一颗二叉树的最小深度。当二叉树只有一个节点时,它的深度是为1.

可以用递归求,求分别递归求左子树与右子树的深度,然后比较深度小的那个加一,值得注意的是,当一个节点,只有左子结点(或只有右子节点)时,这时他并不是一个叶子节点,还需要向下继续求深度,所以右子节点不能返回一个比左子结点求出的深度小的值,就付给他一个较大的值就可以了。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int minDepth(struct TreeNode* root) {
    int leftdepth ,rightdepth;
    if(root == NULL) return 0;
    if(root->left == NULL&&root->right == NULL) return 1;
    else{
        if(root->left!=NULL) {
            leftdepth = minDepth(root->left);
        }
        else leftdepth = 1000000;
        if(root->right!=NULL) 
        {rightdepth = minDepth(root->right);}
        else rightdepth = 1000000;
    }
    if(leftdepth>rightdepth)
    {
        return rightdepth+1;
    }
    else
    {
        return leftdepth+1;
    }

}

知识普及maxheight函数就是求二叉树的左子树与右子树中那个深度最大最大深度多少,minheight函数就是求二叉树的左子树与右子树中那个深度最小最小深度多少,Isbalance函数就是求左子树与右子树的深度差,只要不大于1就是平衡二叉树。 平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。