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

上海工商网站建筑公司网站建设

上海工商网站,建筑公司网站建设,枸橼酸西地那非片功效效及作用,软件开发工程师有前途吗目录 669. 修剪二叉搜索树 前言 思路 递归法 108.将有序数组转换为二叉搜索树 前言 递归法 538.把二叉搜索树转换为累加树 前言 递归法 总结 669. 修剪二叉搜索树 题目链接 文章链接 前言 本题承接昨天二叉搜索树的插入和删除操作题目,要对整棵二叉搜索树…

目录

669. 修剪二叉搜索树

前言

思路

递归法

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

前言

递归法

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

前言

递归法

总结


669. 修剪二叉搜索树

题目链接

文章链接

前言

         本题承接昨天二叉搜索树的插入和删除操作题目,要对整棵二叉搜索树进行遍历修剪。

思路

        因为要遍历整棵二叉搜索树,因此不需要返回值也可以,我们可以完成修剪的操作,但是有返回值更方便,可以通过递归函数的返回值来移除节点。

递归法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == NULL) return NULL;if (root->val < low){//寻找右子树符合区间的节点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.将有序数组转换为二叉搜索树

题目链接

文章链接

前言

        题目强调得到的二叉搜索树必须平衡,因此不可以采用简单的线性结构构造二叉搜索树。要将有序数组的中值作为根节点,左侧作为左子树,右侧作为右子树。

递归法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
private:TreeNode* traversal(vector<int>& nums, int left, int right){if (left > right) return NULL;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;}
public:TreeNode* sortedArrayToBST(vector<int>& nums) {TreeNode* root = traversal(nums, 0, nums.size() - 1);return root;}
};

         在确定数组中值的时候以及递归时左右边界的确定,要严格根据遵守二分法,本题算法采用左闭右闭的区间形式。

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

题目链接

文章链接

前言

         将二叉搜索树转化为累加树本质上和数组逆序累加求和的思路一致,难点在于二叉树的遍历顺序。

递归法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
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;}
};

        本题单层递归采用右中左的逆中序遍历顺序。

总结

        二叉树正式完结!后期要多回顾总结。

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

相关文章:

  • 注册公司代理记账费用昆明做网站优化的公司
  • it企业网站模板下载网站建设服务器端软件
  • 正能量不良网站进入窗口免费阅读黑龙江建设网安管人员管理系统
  • 网站开设作风建设专栏射击游戏网页版
  • 松江建设新城有限公司网站广告设计与制作专业怎么样
  • 鄂州网站制作企业环保网站模板代码
  • 建设银行个人网站登陆营销策划推广
  • 做游戏ppt下载网站万秀服务不错的seo推广
  • 普通网站建设多少钱银川网站建设设计
  • 怎么做网站投票选举成都网站建设源码世纪
  • 网站架构分析工具注册资金写100万后悔
  • 公司网站开发费算什么费用门户网站建设招标方
  • 没有做防注入的网站教做衣服的网站
  • 做网站的时候字体应该多大房产网站建设的功能
  • 域名注册查询网站wordpress cms怎么登陆界面
  • 重庆专业微信商城建设公司叶涛网站推广优化
  • 网站建设群发广告词做课展网站
  • 三维立体网站建设单县做网站
  • 网校网站毕业设计的方案石佛营网站建设
  • 凯里网站设计哪家好高端h5网站建设 上海
  • 国内互联网建站公司排名电子商务网站建设规划报告
  • 做购物网站骗人自己做网站用花钱么
  • 南宁公司网站建设公司唐山做网站公司汉狮价格
  • 个人网站免费服务器想做水果外卖怎么做网站
  • 阿土伯网站做产品推广咋样怎么看一个网站什么程序做的
  • wordpress仿站视频教程一个网址建多个网站
  • 做平面设计的一般浏览什么网站深圳网站建设哪家比较专业
  • 广州 网站开发 骏域旅游网站课程设计
  • 团员注册网站十秒折一个萝卜刀
  • 结婚网站模版公司名字寓意好的字