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

宁波市海曙区建设局网站服装网站建设报关

宁波市海曙区建设局网站,服装网站建设报关,flashfxp与Wordpress,软件技术外包是什么行业669 修剪二叉搜索树 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 class Solution { pub…

669 修剪二叉搜索树

给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(root == nullptr) return root; //如果是空节点直接返回//如果结点小于最小结点,这个肯定要删,此时看一下右孩子们小不小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 L, int R) {if (!root) return nullptr;// 处理头结点,让root移动到[L, R] 范围内,注意是左闭右闭while (root != nullptr && (root->val < L || root->val > R)) {if (root->val < L) root = root->right; // 小于L往右走else root = root->left; // 大于R往左走}TreeNode *cur = root;// 此时root已经在[L, R] 范围内,处理左孩子元素小于L的情况while (cur != nullptr) {while (cur->left && cur->left->val < L) {cur->left = cur->left->right;}cur = cur->left;}cur = root;// 此时root已经在[L, R] 范围内,处理右孩子大于R的情况while (cur != nullptr) {while (cur->right && cur->right->val > R) {cur->right = cur->right->left;}cur = cur->right;}return root;}
};

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

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

class Solution {
private:TreeNode* traversal(vector<int>& nums, int left, int right) {if(right < left) return nullptr;//为了保证平衡,新创建的一定是中间头结点int middle = (left+right)/2;TreeNode* root = new TreeNode(nums[middle]);root->left = traversal(nums,left,middle-1);root->right = traversal(nums, middle+1,right);return root;}
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return traversal(nums,0,nums.size()-1);}
};

迭代法比较复杂,这里先记录一下

class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {if (nums.size() == 0) return nullptr;TreeNode* root = new TreeNode(0);   // 初始根节点queue<TreeNode*> nodeQue;           // 放遍历的节点queue<int> leftQue;                 // 保存左区间下标queue<int> rightQue;                // 保存右区间下标nodeQue.push(root);                 // 根节点入队列leftQue.push(0);                    // 0为左区间下标初始位置rightQue.push(nums.size() - 1);     // nums.size() - 1为右区间下标初始位置while (!nodeQue.empty()) {TreeNode* curNode = nodeQue.front();nodeQue.pop();int left = leftQue.front(); leftQue.pop();int right = rightQue.front(); rightQue.pop();int mid = left + ((right - left) / 2);curNode->val = nums[mid];       // 将mid对应的元素给中间节点if (left <= mid - 1) {          // 处理左区间curNode->left = new TreeNode(0);nodeQue.push(curNode->left);leftQue.push(left);rightQue.push(mid - 1);}if (right >= mid + 1) {         // 处理右区间curNode->right = new TreeNode(0);nodeQue.push(curNode->right);leftQue.push(mid + 1);rightQue.push(right);}}return root;}
};

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

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;}
};
class Solution {
private:int pre; // 记录前一个节点的数值void traversal(TreeNode* root) {stack<TreeNode*> st;TreeNode* cur = root;while (cur != NULL || !st.empty()) {if (cur != NULL) {st.push(cur);cur = cur->right;   // 右} else {cur = st.top();     // 中st.pop();cur->val += pre;pre = cur->val;cur = cur->left;    // 左}}}
public:TreeNode* convertBST(TreeNode* root) {pre = 0;traversal(root);return root;}
};

 二叉树,就此完结!

http://www.yayakq.cn/news/287298/

相关文章:

  • 自己的网站单位网站建设汇报材料
  • 软件开发的三个阶段成都外贸seo
  • 网站服务器和网站备案烟台seo推广优化
  • qq刷赞网站如何做分站男女做污的事情网站视频
  • 泰州网站建设报价做网站公司做网站公司
  • 商丘市住房和城乡建设厅网站怎样建立自己的网站平台
  • 创新的福州网站建设湖南纯手工seo电话
  • 集团公司网站设计建筑模板工
  • 淮北工程建设公司湖南网站seo地址
  • 深圳龙华大浪做网站公司wordpress文章模板下载
  • 网站重构怎么做江苏天宇建设集团有限公司网站
  • 网站建设营销话术杭州开发区建设局网站
  • 机械网站建设哪家好云服务器可以做图片外链网站吗
  • 石桥铺做网站新网站建设的感想
  • 惠济郑州网站建设wordpress yootheme
  • 从信息化建设办公室网站wordpress添加自定义导航栏
  • 一键建设网站网页图片显示不出来
  • 高端品牌网站建设费用西安免费平台网站建设
  • 升级网站天津网络网站公司
  • 企业网站开发需求wordpress短代码转php
  • 企业网站的必要性广告设计与制作专业需要艺考吗
  • 网站建设属于哪个分类编码桂林漓江风景图片
  • 设计网站一般要多少钱网站上的网站地图怎么做
  • 网站建设com河南郑州暴雨伤亡
  • 南京优化网站建设网站的首页面设计
  • 营销网站定制的优势图片模板在线设计制作
  • 微网站开发项目合作协议网站建设服务合同缴纳印花税吗
  • 国内外做的比较好的家装网站成都记者留言网站
  • 给企业做网站运营辉南网站建设
  • 建设企业网站前市场分析免费私人网站