编程--求二叉树最小,最大深度

题目:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。

class Solution {
public:
    int run(TreeNode *root) {
        if(root==NULL){
            return 0;
        }
        //如果左右子树都为空,返回1
        if(root->left==NULL&&root->right==NULL){
            return 1;
        }
       //最小深度是根与叶子结点之间的距离,要找到叶子结点,如果左子树为空,就返回右子树的深度+1;
       if(root->left==NULL){
            return run(root->right)+1;
        }
        //如果右子树为空,就返回左子树的深度+1
       if(root->right==NULL){
             return run(root->left)+1;
        }
        //如果左右子树都不为空,返回左右子树中最小的深度+1;
        return min(run(root->left),run(root->right))+1;
    }
};

题目:给定一个二叉树,找到它的最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点数量。

思路:递归,求出左子树最大深度,求出右子树最大深度,取其中最大的数,再加上头结点(1),即可

边界条件:如果根节点为空,则返回0

猜你喜欢

转载自blog.csdn.net/snowyuuu/article/details/81811066
今日推荐