代码随想录刷题 Day 16

104.二叉树的最大深度

class Solution {
public:
    int get_max(TreeNode* root) {
        if(root == NULL) return 0;
        int left_depth = get_max(root->left);
        int right_depth = get_max(root->right);
        int depth = max(left_depth, right_depth) + 1;
        return depth;
    }

    int maxDepth(TreeNode* root) {
        return get_max(root);
    }
};

111.二叉树的最小深度

代码随想录刷题 Day 16_第1张图片

class Solution {
public:


    int get_depth(TreeNode* root){
        if(root == NULL) return 0;              //这是叶子结点下一个点,所以高度为0,就返回0
        int leftmin = get_depth(root->left);  //左边的最大值
        int rightmin = get_depth(root->right); //右边的最大值
        if(root->left ==NULL &&root->right !=NULL) return 1+rightmin;
        else if(root->right ==NULL &&root->left !=NULL) return 1+leftmin;
        else
        return 1+min(leftmin, rightmin);
    }

    int minDepth(TreeNode* root) {
        return get_depth(root);
    }
};

222.完全二叉树的节点个数

和上一个题一毛一样。。。慢二叉树的解法不是很理解如果碰到的不是满二叉树会怎么处理,在视频的第十分钟有讲解,不会进入死循环一定会碰到满二叉树因为叶子节点一定是满二叉

class Solution {
public:
    int get_node(TreeNode* Node) {
        if(Node == NULL) return 0;
        int left_number = get_node(Node->left);
        int right_number = get_node(Node->right);
        int number = 1+ left_number + right_number;
        return number;
    }


    int countNodes(TreeNode* root) {
        int result = get_node(root);
        return result;
    }
};

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