当前位置: 首页 > news >正文

代码随想录二刷 Day23

669. 修剪二叉搜索树

找到小数字的右子树与大数字左子树必须要重新检查一遍然后让root的左右直接指向return的左右节点;

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == NULL) return NULL;if (root->val < low) {// root->left = trimBST(root->right, low, high);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. Convert Sorted Array to Binary Search Tree

这个题尝试把 root->left = traversal(nums, left, mid - 1); 里面的left改成0但是不行,因为left和right的数值在迭代的过程中会被mid动态替换;

class Solution {
public:// 左闭右闭区间[left, right]TreeNode* traversal(vector<int>& nums, int left, int right) {if (left > right) return NULL; //这句话是因为下面mid可能减一或者加一,然后那mid减完之后还可能变成left或者right,所下面的left和right不能改成0和nums.size() -1;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;}TreeNode* sortedArrayToBST(vector<int>& nums) {TreeNode * root = traversal(nums, 0, nums.size()-1);return root;}
};

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

注意要右中左来遍历二叉树, 中节点的处理逻辑就是让cur的数值加上前一个节点的数值,就是反中序来做累加;

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) {traversal(root);return root;}
};

http://www.lryc.cn/news/180419.html

相关文章:

  • Ubuntu `apt` 报错 “Errors were encountered while processing: base-passwd“ 的解决方法
  • XXL-JOB分布式任务调度
  • 加拿大人工智能数据搜索平台【Secoda】完成1400万美元A轮融资
  • less与sass
  • c-const修饰指针-day16
  • 已解决: Go Error: no Go files in /path/to/directory问题
  • 2022年6月和7月的工作经历
  • 【图像处理】SIFT角点特征提取原理
  • flutter开发实战-应用更新apk下载、安装apk、启动应用实现
  • DispatcherServlet初始化之Spring容器创建1.0
  • CSS的基础
  • mathtype如何嵌入到word中?详细mathtype安装步骤教程
  • 云安全之访问控制的常见攻击及防御
  • Java编程技巧:跨域
  • react create-react-app 配置less
  • 树的表示——孩子兄弟表示法
  • Windows11安装MySQL8.1
  • Linux编程——经典链表list_head
  • 基于51单片机NEC协议红外遥控发送接收仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
  • Jmeter分布式压力测试
  • Rust :mod.rs和lib.rs中use的作用
  • ISP图像信号处理——平场校正介绍以及C++实现
  • 【深入了解Java String类】
  • 基于SpringBoot的知识管理系统
  • Pytorch基础:Tensor的reshape方法
  • 【数据库——MySQL】(13)过程式对象程序设计——存储函数、错误处理以及事务管理
  • Spring Boot的魔法:构建高性能Java应用
  • 如何做好测试?(七)兼容性测试 (Compatibility Testing, CT)
  • 经典循环神经网络(一)RNN及其在歌词数据集上的应用
  • docker+mysql+flask+redis+vue3+uwsgi+docker部署