首页 > 编程语言 >代码随想录算法训练营第23天

代码随想录算法训练营第23天

时间:2023-01-19 19:56:00浏览次数:51  
标签:right TreeNode 23 训练营 随想录 E6% return root left

今日刷题3道:669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树。

●  669. 修剪二叉搜索树

题目链接/文章讲解: https://programmercarl.com/0669.%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html

视频讲解: https://www.bilibili.com/video/BV17P41177ud

class Solution { public:     TreeNode* trimBST(TreeNode* root, int low, int high) {         if(root==nullptr) return nullptr;         if(root->val < low){             TreeNode* right = trimBST(root->right,low,high);             return right;         }         if(root->val > high){             TreeNode* left = trimBST(root->left,low,high);             return left;         }         root->left =trimBST(root->left,low,high);         root->right=trimBST(root->right,low,high);         return root;     } };

●  108.将有序数组转换为二叉搜索树

https://programmercarl.com/0108.%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html

视频讲解:https://www.bilibili.com/video/BV1uR4y1X7qL

class Solution { private:     TreeNode* traversal(vector<int>& nums, int left, int right){         if(left > right) return nullptr;         int mid = left + (right - left)/2;         TreeNode* root = new TreeNode(nums[mid]);         root->left = traversal(nums,left,mid-1);         root->right = traversal(nums,mid+1,right);         return root;     } public:     TreeNode* sortedArrayToBST(vector<int>& nums) {         TreeNode* root = traversal(nums,0,nums.size()-1);         return root;     } };

●  538.把二叉搜索树转换为累加树

https://programmercarl.com/0538.%E6%8A%8A%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%B4%AF%E5%8A%A0%E6%A0%91.html

视频讲解:https://www.bilibili.com/video/BV1d44y1f7wP

class Solution { private:     int pre=0;     void traversal(TreeNode* cur){         if(cur==NULL) return;         traversal(cur->right);         cur->val+=pre;         pre = cur->val;         traversal(cur->left);     } public:     TreeNode* convertBST(TreeNode* root) {         pre=0;         traversal(root);         return root;     } };

标签:right,TreeNode,23,训练营,随想录,E6%,return,root,left
From: https://www.cnblogs.com/zzw0612/p/17061118.html

相关文章

  • 2023牛客寒假集训2
    A-Tokitsukazeanda+b=n(easy)[暴力]A-Tokitsukazeanda+b=n(easy)_2023牛客寒假算法基础集训营2(nowcoder.com)Tokitsukaze有一个整数\(n\),以及$2$个区间\(......
  • 2023牛客寒假算法基础集训营2 A/B题
    题目:简单来说就是给一个数字n,然后数字l1在一个区间,l2在一个区间求出l1和l2不同组合和为n的数量。题解:A题(easy)因为数据范围比较小,所以随便写个循环,直接遍历也能......
  • t团队日常记录 20230119
    今天买了很多菜啊,晚上母亲又拿了几样给我这冰箱。今天还算完成了这个功能了,感觉虽然痛苦并快乐着,有种种困难,包括对程序框架的从陌生到熟悉,也是个过程,包括t团队人员融......
  • 代码随想录day 22 LeetCode 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入
    235.二叉搜索树的最近公共祖先classSolution{public:TreeNode*lowestCommonAncestor(TreeNode*root,TreeNode*p,TreeNode*q){if(root==NULL)returnNULL......
  • 力扣每日一题2023.1.19---2299. 强密码检验器 II
    如果一个密码满足以下所有条件,我们称它是一个强 密码:   它有至少8 个字符。   至少包含一个小写英文 字母。   至少包含一个大写英文 字母。   至......
  • abc236 F - Spices
    题意:选\(S=\{1,2,\dots,2^n-1\}\)的一个子集\(E\),要求\(E\)的子集的异或和取遍\(S\)的所有元素。选取\(S_i\)要花费\(c_i\),问最小花费\(2\len\le16\)思......
  • 2023年1月18日 模块交接会议 —— 数据收集源的扩展与否
    没有想到还是在年前开了模块交接会议,负责交接的人还是比较开心的,比较可以在年前把这个活切割赶紧,但是负责接受的人可是有些苦头了,估计这个年也过得不能消停了,而我也是这其......
  • 2023-1-9练习
    DelivertheCakeEasySSSP跑步(Floyd模板)构造完全图烦人的幻灯片(slides)病毒(virus)点的距离聚会郁闷的出纳员有便便的厕所'......
  • 代码随想录算法训练营day08 | leetcode 344.反转字符串/541. 反转字符串II / 剑指Offe
    基础知识//String->char[]char[]string=s.toCharArray();//char[]->StringString.valueOf(string)注意replacereplaceAll区别,都是全局匹配替换,不过replaceAl......
  • abc236 E - Average and Median
    题意:在给定数组中选数,要求任意相邻的两数至少选一个。问选出来的数的最大平均数和最大中位数\(n\le1e5,1\lea_i\le1e9\)思路:平均数、中位数的典中典二分+转化this......