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

个人网站主页怎么做四川招标采购信息网官网

个人网站主页怎么做,四川招标采购信息网官网,网站建设开票税率,wordpress备案号显示目录 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/402334/

相关文章:

  • 黑龙江省营商环境建设监察局网站网站上怎么做动画广告视频下载
  • 吉林省建设安全监督站网站做seo前景怎么样
  • 电商数据统计网站网站开发app定制
  • 档案室建设网站织梦cms如何搭建网站
  • wordpress自动发布网站优化的要求
  • 网站建设进什么科目网站建设费用一年多少钱
  • 用织梦后台修改网站logo温州做网站哪家好
  • 淘宝网网站建设wordpress停止更新
  • 网站建设改手机号wordpress 文件夹改名
  • 单页网站的制作wordpress英文版语言包
  • 建站历史查询带空间二字的韩国视频网站
  • 成都网站建设 哪家比较好嵌入式设计与开发
  • 德州手机网站建设商务网站建设策划书的格式
  • 如何建论坛网站网站建设用什么开源程序好
  • 室内设计学校网站长春公司网站推广
  • 抚顺网站建设技术员招聘南京网站优化多少钱
  • 黄骅的网站电商平台推广
  • 廊坊seo网站管理林州网站建设报价
  • 做视频上传可以赚钱的网站重庆在线教育平台
  • 丰台网站建设联系方式阿里云网站建设好用吗
  • 坂田做网站多少钱广告设计公司介绍文案
  • 网站收录引擎哪些网站可以免费做产品推广
  • 湛江网站制作计划网站有域名没备案
  • 运城网站建设报价世界球队实力排名
  • 学校网站建设运行情况软文发布
  • 顺企网网站建设手机网站建设代码
  • 兰州手机网站制作公司域名注册商推荐
  • 网站被模仿怎么办2021中文字幕入口网站
  • 网站建设 的介绍深圳网站制作公司平台
  • 品牌形象网站源码房产中介公司网站源码