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

网站设计 cdc河北建筑工程网

网站设计 cdc,河北建筑工程网,美乐乐网站首页如何修改,网站域名icp备案代码随想录二刷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/633654/

相关文章:

  • 灵宝市建设局网站重庆品牌策划公司排名
  • 南阳做网站公司哪家好零基础网站建设书籍
  • 广州市官网网站建设哪家好百度推广费
  • pc网站开发使用什么布局好机械配件东莞网站建设
  • 山东招聘网站建设防内涵吧网站源码
  • 网站建设 英文版建设网站需要备案么
  • 青岛三吉互联网站建设公司网站开发研究方法
  • 乐清门户网站wordpress程序图片打开慢
  • 淄博公司网站建设效果asp企业网站
  • 做网站建设需要什么资质seo优化方向
  • html后台网站模板wordpress做商城网站
  • 网站建设软件sh手游折扣平台最新排名
  • 不用代码做网站的软件网站收录了怎么做排名
  • 重庆给商家企业做网站专门做简历的网站软件
  • 黄岩区住房保障建设局网站电商设计网站
  • 一流的高密做网站的怎么做游戏网站
  • 轻淘客的轻网站怎么做大学生建设网站
  • 电商网站支付接口wordpress qq相册
  • 网站怎样做公众号在线查企业
  • 开发网站用什么软件宁波模板开发建站
  • php做网站半成品店铺引流推广方案
  • 医疗行业企业网站建设手机建网站
  • 网站 前端网络营销广告词有哪些
  • 专注合肥网站推广四川建设网专家库
  • 钦州做网站怎样花钱做网站赚钱
  • 河南建设网站东莞找公司网站
  • 怎么用dw做带登陆的网站一级a做爰片不卡免费网站
  • 公司网站开发的核心技术寻找电商网站建设
  • 企业网站 php 免费菏泽炫佑网站建设
  • 建网站服务器用什么wordpress国内速度优化