首页 > 编程语言 >算法训练day16 LeetCod 104

算法训练day16 LeetCod 104

时间:2023-09-22 21:23:29浏览次数:40  
标签:node right return int day16 getdepth LeetCod 104 left

算法训练day16 LeetCod 104.111.222

104.二叉树的最大深度

题目

104. 二叉树的最大深度 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • 递归采用后序的遍历顺序,在根节点处做高度数据的处理

  • class Solution
    {
    public:
        int getdepth(TreeNode *node)
        {
            if (node == NULL)
                return 0;
            int left = getdepth(node->left);
            int right = getdepth(node->right);
            int depth = max(left, right) + 1;
            return depth;
        }
        int maxDepth(TreeNode *root)
        {
            return getdepth(root);
        }
    };
    
    

111.二叉树的最小深度

题目

111. 二叉树的最小深度 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • 类似上一题,但是注意单支子树结点为空的情况

  • class Solution
    {
    public:
        int getdepth(TreeNode *node)
        {
            if (node == NULL)
                return 0;
            int left = getdepth(node->left);
            int right = getdepth(node->right);
            if (node->left == NULL && node->right != NULL)
                return right + 1;
            if (node->left != NULL && node->right == NULL)
                return left + 1;
            int result = min(left, right) + 1;
            return result;
        }
        int minDepth(TreeNode *root)
        {
            return getdepth(root);
        }
    };
    

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

题目

222. 完全二叉树的节点个数 - 力扣(LeetCode)

题解

代码随想录 (programmercarl.com)

  • 遍历,在根结点处处理数据

  • class Solution
    {
    public:
        int getNodeNum(TreeNode *node)
        {
            if (node == NULL)
                return 0;
            int left = getNodeNum(node->left);
            int right = getNodeNum(node->right);
            int result = left + right + 1;
            return result;
        }
    
        int countNodes(TreeNode *root)
        {
            return getNodeNum(root);
        }
    };
    

标签:node,right,return,int,day16,getdepth,LeetCod,104,left
From: https://www.cnblogs.com/High-source/p/17723393.html

相关文章

  • LeetCode3题学透链表初始化、查找、插入删除、逆置操作
    1.题目要求LeetCode203移除链表指定元素LeetCode707设计链表LeetCode206反转链表  这三个题目包含了链表的初始化、插入头尾结点、插入删除第n个结点,删除指定内容的结点、链表的逆置等,下面我将一一讲解并展示源代码。2.具体操作2.1LeetCode中链表的初始化  我下面所讲......
  • [leetcode] 10. 正则表达式匹配
    10.正则表达式匹配给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无......
  • 【LeetCode】收集树中金币
    链接题目给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处有......
  • 洛谷P5104 红包发红包
    我们假设他是离散的设[0,w]这个区间有i个数那么第一个人期望获得的钱数\(E(1)=\frac{1}{i}\sum_{j=1}^{i}\frac{w}{i}j=\frac{w(1+i)}{2i}\)因为这个区间实际上有无数个数,故令i趋于无穷,有\(E(1)=\frac{w}{2}\)那么轮到第二个人的时候还剩下\(w-\frac{w}{2}=\frac{w}{2}\)这么......
  • Leetcode刷题448.找到所有数组中消失的数字
    给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所有在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1:输入:nums=[4,3,2,7,8,2,3,1]输出:[5,6]示例2:输入:nums=[1,1]输出:[2] 提示:n==nums.lengt......
  • Leetcode刷题283.移动零
    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0] 提示:1<=nums.length<......
  • LeetCode53.最大子数组和
    要求最大连续子数组的和,可以这样考虑,比如现在我想求下标 i~j,i<j 这一范围内子数组的和,那么我可以分别先求出 0~i-1 范围和 0~j 范围两个子数组的和,可得Sum[i~j]=Sum[0~j]-Sum[0~i-1] ,这就是本题解法的核心思想。解法详细描述:先从下标0开始,遍历 nums 数组,求出到当前下标......
  • leetcode 22 括号生成
    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8  //这种用例很可能就是递归代码:classSolut......
  • 【LeetCode】LCP 06. 拿硬币
    描述桌上有​​n​​​堆力扣币,每堆的数量保存在数组​​coins​​中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例输入:​​[4,2,1]​​输出:​​4​​解释:第一堆力扣币最少需要拿2次,第二堆最少需要拿1次,第三堆最少需要拿1次,......
  • 2023.9.20 CF gym 104128 vp
    The2022ICPCAsiaNanjingRegionalContesthttps://codeforces.com/gym/104128A......