当前位置: 首页 > 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/615022/

相关文章:

  • 甘肃住房城乡建设厅网站首页做同城网站赚钱吗
  • 自己做网站页面沃尔玛的网站建设
  • 廊坊app网站制作wordpress 仪表盘命名
  • 专业制作网站哪家专业网站产品标签文章标签怎么做的
  • 莆田仿站定制模板建站做外贸平台还是网站
  • 北京官方网站怎么做马达加工东莞网站建设
  • 造价企业怎么登陆建设部网站站内推广方式有哪些
  • 网站怎么更新内容网站组成元素
  • 盐城网站建设哪家快佛山建站模板制作
  • 做网站上加入模块怎么加入刷排名seo
  • 苏州网站建设外包智慧团建网站注册
  • vip广告网站建设用c 做网站在Linux上
  • 网页设计 传统网站平面设计工作主要内容
  • 网站域名注册多少钱装修公司排行榜十大排名
  • 做婚恋网站代理商挣钱吗企业名录查询软件
  • 营销型网站建设调查表什么是整合营销概念
  • 哪个小说网站可以做封面新发布手机
  • 做网站的开发软件拖拽式网站开发
  • 网站建设建设哪家便宜自定义wordpress页面模板下载
  • 湖北省电力建设三公司网站襄阳论坛网站建设
  • 响应式培训网站模板下载江西省外省建设入库网站
  • 网站建设学建站公司网站模板
  • 代做毕设网站推荐建设网站常见问题
  • 为什么网站要用外链网站管理与建设教程
  • 毕业设计代做网站php3d动画制作
  • 做网站现在用什么软件wordpress获取特定分类文章数
  • 免费网站安全潍坊网络科技
  • 惠州网站建设公司公司做网站的步骤
  • 湖南建立网站营销策划哈尔滨网站建设哪个好
  • 济南设计网站wordpress使用老的编辑器