代码随想录算法训练营第36期DAY25

DAY25

669修剪二叉搜索树

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.     TreeNode* fdr(TreeNode* root,int low,int high)
  15.     {
  16.         if(root==nullptr) return nullptr;
  17.         if(root->val<low){
  18.             TreeNoderight=fdr(root->right,low,high);
  19.             return right;
  20.         }
  21.         if(root->val>high){
  22.             TreeNodeleft=fdr(root->left,low,high);
  23.             return left;
  24.         }
  25.         root->left=fdr(root->left,low,high);
  26.         root->right=fdr(root->right,low,high);
  27.         return root;
  28.     }
  29.     TreeNode* trimBST(TreeNode* root, int low, int high) {
  30.         return fdr(root,low,high);
  31.     }
  32. };

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

有序数组构造二叉树:从数组中间位置取值作为节点元素,就是平衡的了。

根据数组构造二叉树,其本质是寻找分割点,然后递归左区间和右区间。

二分法mid=(left+right)/2可能会爆INT,写成mid=left+(right-left)/2【相当于:偶数取左边】;

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. public:
  14.   TreeNode* getr(vector<int> &nums,int left,int right)
  15.     {
  16.         if(left>right){
  17.             return nullptr;
  18.         }
  19.         int mid=left+(right-left)/2;
  20.         TreeNode* root=new TreeNode(nums[mid]);
  21.         root->left=getr(nums,left,mid-1);
  22.         root->right=getr(nums,mid+1,right);
  23.         return root;
  24.     }
  25.     TreeNode* sortedArrayToBST(vector<int>& nums) {
  26.         return getr(nums,0,nums.size()-1);
  27.     }
  28. };

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

  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. private:
  14.     int pre=0;
  15.     void GS(TreeNode* root)
  16.     {
  17.         if(root==nullptrreturn;
  18.         GS(root->right);
  19.         root->val+=pre;
  20.         pre=root->val;
  21.         GS(root->left);
  22.     }
  23. public:
  24.     TreeNode* convertBST(TreeNode* root) {
  25.         GS(root);
  26.         return root;
  27.     }
  28. };

相关推荐

  1. 代码随想算法训练36DAY25

    2024-05-12 07:30:02       9 阅读
  2. 代码随想算法训练36DAY23

    2024-05-12 07:30:02       11 阅读
  3. 代码随想算法训练29Day27|LeetCode 39,40,131

    2024-05-12 07:30:02       36 阅读
  4. 代码随想算法训练36DAY51

    2024-05-12 07:30:02       12 阅读
  5. 代码随想算法训练36DAY53

    2024-05-12 07:30:02       10 阅读
  6. 代码随想算法训练36DAY52

    2024-05-12 07:30:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 07:30:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 07:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 07:30:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 07:30:02       20 阅读

热门阅读

  1. 设计模式-09 - 享元模式 flyweight pattern

    2024-05-12 07:30:02       9 阅读
  2. Linux权限(二)

    2024-05-12 07:30:02       11 阅读
  3. 数据结构之队列

    2024-05-12 07:30:02       9 阅读
  4. DBSCAN聚类算法

    2024-05-12 07:30:02       12 阅读
  5. WEB前端复习——HTML

    2024-05-12 07:30:02       11 阅读
  6. UML 方法

    2024-05-12 07:30:02       14 阅读
  7. C语言-STM32:初始定时器(通用定时器)

    2024-05-12 07:30:02       9 阅读
  8. Lua 协程池

    2024-05-12 07:30:02       12 阅读
  9. EureKa详细讲解通俗易懂

    2024-05-12 07:30:02       10 阅读
  10. flask+layui显示监控视频

    2024-05-12 07:30:02       12 阅读
  11. 代码绘梦:Processing艺术编程入门

    2024-05-12 07:30:02       8 阅读
  12. 大数据调度 Apache Airflow 安装部署

    2024-05-12 07:30:02       14 阅读