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

家教网站建设网络舆情事件案例

家教网站建设,网络舆情事件案例,自助做网站,电商分享推广怎么做代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言:C 669. 修剪二叉搜索树 链接:https://leetcode.cn/problems/trim-a-binary-search-tree/ 递归 class Solution { public:Tree…

代码随想录二刷Day23

今日任务

669.修剪二叉搜索树
108.将有序数组转换为二叉搜索树
538.把二叉搜索树转换为累加树
语言:C++

669. 修剪二叉搜索树

链接:https://leetcode.cn/problems/trim-a-binary-search-tree/
递归

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

迭代

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(root == NULL) return NULL;while(root && (root->val < low || root->val > high)){if(root->val < low) root = root->right; //左边没必要修建了,都不符合条件else root = root->left;}//当前root的值肯定是位于[low,high]中的TreeNode* cur = root;while(cur){//左侧的值是更小的,直接剪掉while(cur->left && cur->left->val < low){cur->left = cur->left->right;}cur = cur->left;}cur = root;while(cur){//右侧的值是更大的,直接剪掉while(cur->right && cur->right->val > high){cur->right = cur->right->left;}cur = cur->right;}return root;}
};

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

链接:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/
递归

class Solution {
public:TreeNode* traversal(vector<int>& nums, int left, int right){if(left > right) return NULL;if(left == right) return new TreeNode(nums[left]);int mid = left + ((right - left) >> 1);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) {if(nums.size() == 1) return new TreeNode(nums[0]);return traversal(nums, 0, nums.size() - 1);}
};

迭代

class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {queue<TreeNode*> nodeQue;queue<int> leftQue;queue<int> rightQue;TreeNode* root = new TreeNode(0);nodeQue.push(root);leftQue.push(0);rightQue.push(nums.size() - 1);while(!nodeQue.empty()){int left = leftQue.front(); leftQue.pop();int right = rightQue.front(); rightQue.pop();int mid = left + ((right - left) >> 1);TreeNode* cur = nodeQue.front(); nodeQue.pop();cur->val = nums[mid];if(left <= mid - 1){cur->left = new TreeNode(0);nodeQue.push(cur->left);leftQue.push(left);rightQue.push(mid - 1);}if(mid + 1 <= right){cur->right = new TreeNode(0);nodeQue.push(cur->right);leftQue.push(mid + 1);rightQue.push(right);}}return root;}
};

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

链接:https://leetcode.cn/problems/convert-bst-to-greater-tree/
递归

class Solution {
public:int sum = 0;int curSum = 0;void getSum(TreeNode* root){if(root == NULL) return;getSum(root->left);sum += root->val;getSum(root->right);}void traversal(TreeNode* root){if(root == NULL) return;traversal(root->left);int tmp = root->val;root->val = sum - curSum;curSum += tmp;traversal(root->right); }TreeNode* convertBST(TreeNode* root) {if(root == NULL) return root;getSum(root);traversal(root);return root;}
};

没有必要中序遍历,按照右中左遍历即可

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

迭代

class Solution {
public:TreeNode* convertBST(TreeNode* root) {if(root == NULL) return root;int pre = 0;stack<TreeNode*> st;TreeNode* cur = root;//中序遍历反过来 while(!st.empty() || cur){if(cur){st.push(cur); //rootcur = cur->right;}else{cur = st.top();st.pop();cur->val += pre;pre = cur->val;cur = cur->left;}}return root;}
};
http://www.yayakq.cn/news/584878/

相关文章:

  • 贵港公司做网站网络营销是什么工作内容
  • 不侵权的图片素材网站wordpress改字体大小
  • 无锡专业网站有友情链接的网站
  • 株洲市建设局网站seo整站优化新站快速排名
  • 企业注册百家号可以做网站吗如何设计企业网站
  • 中国空间站设计在轨飞行多少年苏州知名网站制作公司
  • 黑龙江省建设安全网站wordpress中文站cn
  • 营销型网站5要素制作动漫的软件
  • 重庆荣昌网站建设价格wordpress app内
  • 做汇算清缴在哪个网站下网站内容管理系统建设
  • 下载一个网站丹徒网站建设代理商
  • 做网站租服务器需要多少钱南昌网站建设制作与维护
  • 包头教育云平台网站建设卖汽车配件怎么做网站
  • 网站上的报名表链接是怎么做的seo北京公司
  • cms做网站可以做些什么网站做旅游网站的
  • 公司网站能自己做二维码网站备案 核验单
  • 方维服务客户类型杭州云优化信息技术有限公司
  • 如何让网站快速被收录游戏优化软件
  • 靖江网站定制石家庄房产网站官网
  • 海口网站建设公司排名网上找设计师
  • 黄山网站建设黄山全国企业工商信息查询系统
  • 合理规划网站国外js网站
  • 国外产品设计网站推荐网站背景图片切换
  • 高端品牌网站建设明细报价报商丘手机网站制作
  • 重庆网站建站价格网站流量怎么做乡1万
  • 电商网站设计图片en support wordpress
  • 深圳科技有限公司 网站建设门户网站html下载
  • 主流网站开发门户网站意思
  • 网站建设相关参考资料做微网站的第三方登录
  • 湖南营销型网站建设企业如何制作个人网页设计