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

无极网站快照网站

无极网站,快照网站,wordpress的代码逻辑,如何做交互式网站669.修剪二叉搜索树 链接:. - 力扣(LeetCode) 题目描述: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变…

669.修剪二叉搜索树

链接:. - 力扣(LeetCode)

题目描述:

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。

所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

示例 1:

输入:root = [1,0,2], low = 1, high = 2
输出:[1,null,2]

示例 2:

输入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3
输出:[3,2,null,1]

提示:

  • 树中节点数在范围 [1, 104]
  • 0 <= Node.val <= 104
  • 树中每个节点的值都是 唯一
  • 题目数据保证输入是一棵有效的二叉搜索树
  • 0 <= low <= high <= 104

思路:

与删除二叉树节点的思路一样,遍历二叉树,当前节点如果小于我们需要的区间,则删除该节点的左子树,并且去遍历当前节点的右子树,因为遍历的是二叉树搜索树,因此右子树的值肯定是大于根节点的,不确定右子树的所有元素都在我们需要的区间内,因此需要去遍历,当前节点如果大于我们需要的区间,则删除该节点的右子树,并且去遍历当前节点的左子树,查看是否所有的节点都满足我们的区间

递归实现:

1.确定函数参数和返回值,函数的参数一个为要修剪的二叉树,以及我们的区间范围,返回值应该是修剪后的二叉树

2.确定终止条件,如果当前节点为空,则返回上一个节点,否则查看当前节点的值是否满足我们的条件

3.确定单层递归逻辑,遍历左右子树

代码实现:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
struct TreeNode* trimBST(struct TreeNode* root, int low, int high) {if(!root)return NULL;if(root->val < low){struct TreeNode *tem = root->right;//遍历该节点的右子树,因为右子树比该节点大,但是不一定都在范围内tem = trimBST(root->right, low, high);free(root);return tem;}else if(root->val > high){//遍历该节点的左子树,因为左子树比该节点小,但是不一定都在范围内struct TreeNode *tem = root->left;tem = trimBST(root->left, low, high);free(root);return tem;}root->left = trimBST(root->left,low,high);root->right = trimBST(root->right,low,high);return root;
}

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

链接:. - 力扣(LeetCode)

题目描述:

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵

平衡

二叉搜索树。

示例 1:

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums严格递增 顺序排列

思路:

与构建二叉树的思路一样,对有序数组进行区间分割,先找到数组中间元素的位置,将其作为根节点,因为数组是递增的,且要构建搜索二叉树,如何按照区间分割的思路来实现

递归实现

1.确定函数的参数和返回值,函数参数应该为有序数组,以及我们要分割的左右区间

2.确定递归终止条件,如果我们数组的左右区间不符合正常情况,则返回空

3.确定单层递归逻辑,找到根节点位置,进行区间的分割,依次创建左右子树

代码实现:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
struct TreeNode *found(int *nums, int left, int right)
{if(left > right)return NULL;struct TreeNode *node = (struct TreeNode*)malloc(sizeof(struct TreeNode));int mid = (left + right) / 2;node->val = nums[mid];node->left = found(nums,left,mid-1);node->right = found(nums,mid+1,right);return node;
}struct TreeNode* sortedArrayToBST(int* nums, int numsSize) {return found(nums,0,numsSize-1);
}

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

链接:. - 力扣(LeetCode)

题目描述:

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。

提醒一下,二叉搜索树满足下列约束条件:

  • 节点的左子树仅包含键 小于 节点键的节点。
  • 节点的右子树仅包含键 大于 节点键的节点。
  • 左右子树也必须是二叉搜索树。

注意:本题和 1038: . - 力扣(LeetCode) 相同

示例 1:

输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

示例 2:

输入:root = [0,null,1]
输出:[1,null,1]

示例 3:

输入:root = [1,0,2]
输出:[3,3,2]

示例 4:

输入:root = [3,2,4,1]
输出:[7,9,4,10]

提示:

  • 树中的节点数介于 0 和 104 之间。
  • 每个节点的值介于 -104 和 104 之间。
  • 树中的所有值 互不相同
  • 给定的树为二叉搜索树。

思路:

根据二叉搜索树的性质,我们可以知道中序遍历(左中右)得到的是一个递增的数组,因为题目要求我们要得到累加树,因此我们就要从右子树开始访问再依次累加,因此我们的递归顺序就变为了右中左,在实现累加操作时,我们需要使用双指针的思路,一个记录当前节点,另一个记录前一个节点的值,用来实现累加

递归实现:

1.确定函数的参数和返回值,因为我们只是要对树每个节点的值进行操作,因此不需要返回值,传入的参数应该是二叉树

2.确定递归的终止条件,当我们二叉树遍历完成时,递归终止

3.确定单层递归逻辑,先去更新右子树,再去处理根节点,最后出来左子树

代码实现:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
int pre = 0;
void fc(struct TreeNode *root)
{if(root == NULL)return ;fc(root->right);root->val += pre;pre = root->val;fc(root->left);
}
struct TreeNode* convertBST(struct TreeNode* root) {pre = 0;fc(root);return root;
}

http://www.hkea.cn/news/727003/

相关文章:

  • 甘肃网站建设公司百中搜优化软件
  • 国内外贸网站建设公司seo教程 百度网盘
  • 一物一码二维码生成系统最好用的系统优化软件
  • 如何在大网站做外链镇江网站建站
  • 杭州网站建设公司导航短视频营销案例
  • 昆明做网站建设有哪些长尾关键词排名工具
  • 一女被多男做的视频网站网站seo系统
  • 网站建设 青海网站建设找哪家好
  • win7 网站配置优化方案官网电子版
  • 广州seo优化公司排名浙江seo博客
  • 全网推广的方式有哪些抖音seo推荐算法
  • 网站开发开源架构抖音营销软件
  • 自己做的网站能放到网上么青岛seo经理
  • 营业推广策划方案邵阳网站seo
  • 手机网站横向切换kol合作推广
  • 专门做超市海报的网站宁波seo咨询
  • 仿网站上的焦点图在线看seo网站
  • 做网站的业务员艾滋病阻断药有哪些
  • web集团网站建设广告投放平台有哪些
  • 大连做网站建设广告资源对接平台
  • 做网站怎么写工作日志泉州网站seo公司
  • wordpress外链站内打开搜索引擎是什么意思啊
  • 做论坛网站需要什么备案新站seo优化快速上排名
  • 动漫网站html百度网盘搜索
  • 怎么看一个网站什么语言做的宝鸡seo培训
  • 数据库网站建设公司他达拉非片
  • 英文商城网站建设搜索引擎营销的特点
  • 易优建站系统图片百度搜索
  • 网站开发不用框架web网站设计
  • 技能网站建设项目需求武汉网络推广外包公司