首页 > 其他分享 >代码随想录 day23 修剪二叉搜索树 将有序数组转换为二叉搜索树 把二叉搜索树转换为累加树

代码随想录 day23 修剪二叉搜索树 将有序数组转换为二叉搜索树 把二叉搜索树转换为累加树

时间:2024-01-18 22:45:32浏览次数:33  
标签:修剪 转换 随想录 累加 搜索 二叉 节点

修剪二叉搜索树

这道题不能直接写删除代码 因为要涉及父子关系的保留


这样是暴力删掉不符合区间的节点
但是没有保留父子关系


这里我们把不符合区间的节点通过一个临时节点传递出来
然后在外面合适方向接住
具体怎么接住的呢
其实就是对于root来说
左边子树抛出的节点 就会在左边被接上 因为有个root->left 去接收这样的节点

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

因为是二叉搜索树 而且要求高度平衡
所以这里的想法就是从中间开始构造
然后第一层的left就是mid - 1 right 就是 mid + 1
然后两边压缩范围构筑这棵树

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

从后往前累加就行
不需要记录pre指针 记录数值就行
遍历顺序从树上看就是右中左

标签:修剪,转换,随想录,累加,搜索,二叉,节点
From: https://www.cnblogs.com/mingtiao/p/17973568

相关文章

  • 29_二叉搜索树中的插入操作
    701.二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。......
  • vue2中使用v-selectpage插件 搜索并分页
    <v-selectpagedata="/api/intrusionevent/lists"v-model="temp.event_id"key-field="id"show-field="description"search-field="de......
  • xapian 搜索引擎介绍与使用入门
    Xapian是一个开源搜索引擎库,使用C++编写,并提供绑定(bindings )以允许从多种编程语言使用。它是一个高度适应性的工具包,允许开发人员轻松地将高级索引和搜索功能添加到自己的应用程序中。Xapian支持多种加权模型和丰富的布尔查询运算符。最新稳定版本是1.4.24,发布于2023年......
  • 搜索学习笔记+杂题 (进阶二 dfs/bfs的进阶)
    前言:由于搜索的题还是做的太少了,所以以后有可能会不定期更新。四、还是进阶的dfs/bfs相关题单:戳我1、dfs(1)meetinthemiddleP2962[USACO09NOV]LightsG颠覆了我对折半搜索的认知,果然,只要满足了折半搜索的几个性质,基本上都可以使用折半搜索来处理。首先我们拿到的是一张......
  • 代码随想录 day22 二叉搜索树的最近公共祖先 二叉搜索树中的插入操作 删除二叉搜索树
    二叉搜索树的最近公共祖先这题跟之前的不一样可以利用二叉搜索树有序的特点有序就说明可以根据节点的值与pq的关系判断应该往左边搜索还是右边搜索这题显然是不需要遍历整棵树的所以是写的遍历边的写法遍历树需要用变量接受二叉搜索树中的插入操作一开始还以为要遍历......
  • 代码随想录算法训练营第一天| LeetCode704 二分查找,LeetCode35,LeetCode34,leetcode27.
    LeetCode704题目链接:704.二分查找-力扣(LeetCode)第一时间的想法:简单来说,二分法给我的印象就是想一条绳子上打很多的结,每次对折正好是一个结点,我们需要找到想要的结点比如(a)代码思路就是不断对折一直到绳子两端重合中间没有结点,最后剩下的就是要找的结点a了。......
  • 二叉树结构与递归实现前中后序遍历
    1.二叉树结构2.二叉树节点遍历顺序前序:每颗子树以中—》左—》右遍历ABDEHCFG 中序:每颗子树以左 —》中—》右遍历DBEHAFCG 后序:每颗子树以左 —》右—》中遍历DHEBFGCA 代码实现:publicclassBinaryTree{stat......
  • [代码随想录] 第七天
    344.翻转字符串[https://leetcode.cn/problems/reverse-string/submissions/496111203/]思路:类似于原地翻转数组,左指针右指针向中间靠拢,交换对应元素。classSolution{publicvoidreverseString(char[]s){intleft=0;intright=s.length-1;......
  • 二叉树的公共祖先
    最开始做的时候,就先想到的是找父节点的那个函数,于是先把目标节点的所以祖先节点存起来,然后一个一个进行比对,当然这样耗时很大。点击查看代码classSolution{public:vector<TreeNode*>vp,vq;TreeNode*findfa(TreeNode*root,TreeNode*k){if(!root){returnNULL;}if(ro......
  • 验证二叉搜索树
    首先要明白二叉搜索树如果按照中序遍历存放在数组就是呈现递增的形式。所以该题的框架一定是基于中序遍历的形式。但我最开始写的时候忽略了一个点,if(root->left->val>=root->val){returnfalse;}if(root->right->val<=root->val){returnfalse;}这样每个二叉树单独看都可以......