leetcode刷题(第十六天)104.二叉树的最大深度 559.n叉树的最大深度; 111.二叉树的最小深度;222.完全二叉树的节点个数

文章讲述了二叉树、n叉树的最大深度和最小深度问题,强调递归方法的理解和应用,以及迭代法(如层序遍历)的实践。同时提到了完全二叉树节点个数的求解。推荐先通过视频理解基本概念,然后通过代码随想录中的例子和练习加深理解。
摘要由CSDN通过智能技术生成

今日任务104.二叉树的最大深度  559.n叉树的最大深度 111.二叉树的最小深度222.完全二叉树的节点个数

卡哥建议:迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。

重点:

参考链接:代码随想录:代码随想录 (programmercarl.com)

104.二叉树的最大深度(优先掌握递归)

题目讲解(全):代码随想录

题目建议:什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。

刷题链接:力扣题目链接

//最大深度--深度回溯的过程----递归

class solution {
public:
    最大深度--深度回溯的过程----递归
    int result;
    void getdepth(TreeNode* node, int depth) {
        result = depth > result ? depth : result; // 中
        //终止条件
        if (node->left == NULL && node->right == NULL) return ;

        if (node->left) { // 左
            depth++;    // 深度+1
            getdepth(node->left, depth);//depth一直在用,需要--,回到本身的值
            depth--;    // 回溯,深度-1
        }
        if (node->right) { // 右
            depth++;    // 深度+1
            getdepth(node->right, depth);
            depth--;    // 回溯,深度-1
        }
        return ;
    }
    int maxDepth(TreeNode* root) {
        result = 0;
        if (root == NULL) return result;
        getdepth(root, 1);
        return result;
    }
};

简易

class Solution {
public:
    //最大深度--深度回溯的过程----递归
    int result;
    void getDepth(TreeNode* root,int depth){
        result=result > depth ? result:depth;
        //终止条件
        if(root->left == NULL &&root->right == NULL)return ;
        if(root->left){
            getDepth(root->left,depth+1);//+在形参,不改变本身的depth
        }
        if(root->right){   
            getDepth(root->right,depth+1);          
        }
    }

    int maxDepth(TreeNode* root) {
        result = 0;
        if(root == NULL)return result;
        getDepth(root,1);
        return result;
    }
};

//最大深度--迭代法---层序遍历-顺带求解层数--深度

class Solution {
public:
    //最大深度--迭代法---层序遍历-顺带求解层数--深度
    int maxDepth(TreeNode* root) {
        int depth = 0;
        if(root == NULL)return depth;
        queue<TreeNode*> que;
        que.push(root);
        while(!que.empty()){
            int size =que.size();
            depth++;
            for(int i=0; i<size; ++i){
                TreeNode* node=que.front();
                que.pop();
                if(node->left)que.push(node->left);
                if(node->right)que.push(node->right);
            }
        }        
        return depth;
    }
};

视频讲解:二叉树的高度和深度有啥区别?究竟用什么遍历顺序?很多录友搞不懂 | 104.二叉树的最大深度

看到题目的第一思路:

看完代码随想录之后的想法:

自己实现过程中遇到哪些困难

每日精华:

类似题目:

 559.n叉树的最大深度(优先掌握递归)

题目讲解(全):代码随想录 (programmercarl.com)

题目建议:

刷题链接:力扣题目链接

视频讲解:

看到题目的第一思路:

看完代码随想录之后的想法:

自己实现过程中遇到哪些困难

每日精华:

类似题目:

 111.二叉树的最小深度(优先掌握递归)

题目讲解(全):代码随想录

题目建议:先看视频讲解,和最大深度 看似差不多,其实 差距还挺大,有坑。

刷题链接:

视频讲解:

看到题目的第一思路:

看完代码随想录之后的想法:

自己实现过程中遇到哪些困难

每日精华:

类似题目:

222.完全二叉树的节点个数(优先掌握递归)

题目讲解(全):代码随想录

题目建议:需要了解,普通二叉树 怎么求,完全二叉树又怎么求

刷题链接:

视频讲解:

看到题目的第一思路:

看完代码随想录之后的想法:

自己实现过程中遇到哪些困难

每日精华:

类似题目:

今日收获,记录一下自己的学习时长:

优质文章:学习参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值