- 2024-11-21二叉搜索树的基本操作(最全面)
目录二叉搜索的定义:节点类:查找关键词对应的值:非递归递归:查找最小关键词对应的值:方法一:方法二:查找最大关键词对应的值:方法一:方法二:存贮关键词对应的值:查找关键词的前驱值:查找关键词对应的后继值: 删除节点:非递归:递归:范围1.小于某值的范围2
- 2024-11-21LeetCode235. 二叉搜索树的最近公共祖先
题目描述:给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:
- 2024-11-21二叉搜索树
应用BST通过优先级来构建一棵树,有利于我们系统的架构时,根据具体框架的优先级来便于构建系统的结构树,方便我们的查找和插入。性质左子树的元素均小于根节点右子树的元素均大于根节点左右子树均为二叉搜索树和堆的结构类似,只不过根和子树的大小关系的不同,但均是通过元素的大
- 2024-11-1598. 验证二叉搜索树
题目链接解题思路这种二叉树的题目,绝大部分可以用「二叉树的递归套路」来解决,那么什么是「二叉树的递归套路」?其实就是每个节点会有信息,该节点信息怎么来的?左儿子的信息+右儿子的信息,然后加工成自己的信息。根结点是否是搜索二叉树?需要左儿子和右儿子给什么信息?首先
- 2024-11-13洛谷题单指南-二叉堆与树状数组-P1878 舞蹈课
原题链接:https://www.luogu.com.cn/problem/P1878题意解读:n个男女排列一行,每人舞蹈技术是ai,每次找到相邻男女舞蹈技术差值绝对值最小的一对出列,输出每对出列的人员编号。解题思路:设初始有8人编号为:12345678将12,23,34,45,56,67,78中是男女的配对编号以及a
- 2024-11-12二叉搜索树实现教程:用C++实现数据存储与查找
文章目录1.二叉搜索树的概念2.二叉搜索树的性能分析3.二叉搜索树的插入4.二叉搜索树的查找5.二叉搜索树的删除6.⼆叉搜索树的实现代码7.⼆叉搜索树key和key/value使⽤场景7.1key搜索场景:7.2key/value搜索场景:7.3key/value⼆叉搜索树代码实现1.二叉搜索树
- 2024-11-11洛谷题单指南-二叉堆与树状数组-P2085 最小函数值
原题链接:https://www.luogu.com.cn/problem/P2085题意解读:有n个函数,函数中x取值>=1,计算所有函数能得到的值中最小的m个。解题思路:函数中x取值是>=1的整数,因此每个函数的值是f(1),f(2),f(3)....,是一个递增序列,题目本质上是要从n个递增序列中找到前m个最小的数。首先,对所有函数
- 2024-11-1196. 不同的二叉搜索树
题目链接解题思路暴力怎么做?n个节点,我们要先选头节点i,头节点选中之后,左子树的节点数就决定了,右子树的节点数也就决定了,所以选择头节点i后,不同的数目是左子树不同数目*右子树不同数目,这又是子问题了,又可以递归得到结果。有一个细节,假设n等于5,1,2,3,4,5,假设现在选择了3为头
- 2024-11-11leetcode1008. 前序遍历构造二叉搜索树
给定一个整数数组,它表示BST(即 二叉搜索树 )的 先序遍历 ,构造树并返回其根。保证 对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。二叉搜索树 是一棵二叉树,其中每个节点, Node.left 的任何后代的值 严格小于 Node.val , Node.right 的任何后代的值
- 2024-11-10代码随想录算法训练营第19天|235. 二叉搜索树的最近公共祖先 ,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点
235.二叉搜索树的最近公共祖先文章链接:https://programmercarl.com/0235.二叉搜索树的最近公共祖先.html题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/思路:利用二叉搜索树的特性,当第一次遇到在[p,q]区间或[q,p]区间的元素的节点,则
- 2024-11-10代码随想录算法训练营第18天| 530.二叉搜索树的最小绝对差, 501.二叉搜索树中的众数 , 236. 二叉树的最近公共祖先
530.二叉搜索树的最小绝对差文章链接:https://programmercarl.com/0530.二叉搜索树的最小绝对差.html视频链接:https://www.bilibili.com/video/BV1DD4y11779/?vd_source=6cb513d59bf1f73f86d4225e9803d47b题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in
- 2024-11-09判断该给定的二叉树是否为二叉搜索树
习题4.3是否二叉搜索树/*typedefstructTNode*Position;typedefPositionBinTree;structTNode{ ElementTypeData; BinTreeLeft; BinTreeRight;};*/BinTreeB=NULL;//全局指针,用来记录中序的上一个结点boolIsBST(BinTreeT){ //如果结点为空直接返回tru
- 2024-11-09代码随想录算法训练营第十七天| 654.最大二叉树 , 617.合并二叉树 , 700.二叉搜索树中的搜索 , 98.验证二叉搜索树
654.最大二叉树文章链接:https://programmercarl.com/0654.最大二叉树.html题目链接:https://leetcode.cn/problems/maximum-binary-tree/description/classSolution{public:TreeNode*traversal(vector<int>&nums,intleft,intright){if(left>=right)ret
- 2024-11-09二叉搜索树
一.二叉搜索树介绍 二叉搜索树又叫做二叉排序树,它拥有一些特殊的性质。 1.若它的左子树不为空,那么左子树上面的节点全部小于根节点。 2.若它的右子树不为空,那么右子树上面的节点全部大于根节点。 3.它的左右子树也全部都是二
- 2024-11-08二叉搜索树、AVL(平衡二叉查找树)、红黑树
一、二叉搜索树二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树1.二叉搜索树的操作1.二
- 2024-11-08洛谷题单指南-二叉堆与树状数组-P1168 中位数
原题链接:https://www.luogu.com.cn/problem/P1168题意解读:中位数就是位于中间的数,前1个数的中位数是第1个,前3个数的中位数是第2个,前5个数的中位数的第3个...以此类推。所以,此题本质上就是动态维护一组数,每1/3/5...等奇数个取第k小的数,取一次后k++。解题思路:要动态维护数据,且每
- 2024-11-08代码随想录算法训练营第二十一天| leetcode669. 修剪二叉搜索树、leetcode108.将有序数组转换为二叉搜索树、leetcode538.把二叉搜索树转换为累加树
1leetcode669.修剪二叉搜索树题目链接:669.修剪二叉搜索树-力扣(LeetCode)文章链接:代码随想录视频链接:你修剪的方式不对,我来给你纠正一下!|LeetCode:669.修剪二叉搜索树_哔哩哔哩_bilibili思路:目前想的是分三种情况,第一种情况就是这个数删除左边全部,第二种删除右边的全部,第
- 2024-11-08数据结构 --树
定义树是n(n>=0)个结点的有限集。n=0时,称为空树。在任意一棵树非空树中应满足:(1)有且仅有一个特定的称为根(root)的结点(2)当时,其余结点可分为个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树。基本概念结点的度:一个结点拥有的子树的数目叶子结点:度为0
- 2024-11-08代码随想录算法训练营第二十天|leetcode235. 二叉搜索树的最近公共祖先、leetcode701.二叉搜索树中的插入操作、leetcode450.删除二叉搜索树中的节点
1leetcode235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先-力扣(LeetCode)文章链接:代码随想录视频链接:二叉搜索树找祖先就有点不一样了!|235.二叉搜索树的最近公共祖先_哔哩哔哩_bilibili思路:用之前一样的方法,哈哈哈哈哈,好处就是做出来了,但是我觉得需
- 2024-11-07验证二叉搜索树
题目描述给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。98.验证二叉搜索树-力扣(LeetCode) 解题思
- 2024-11-07基于信息增益和基尼指数的二叉决策树
#coding:UTF-8'''基于信息增益和基尼指数的二叉决策树的实现。该决策树可以用于分类问题,通过选择合适的特征来划分样本。'''fromcollectionsimportCounterclassbiTree_node:'''二叉树节点定义每个节点可以是叶子节点或内部节点。'''def_
- 2024-11-06代码随想录算法训练营第十八天|leetcode530.二叉搜索树的最小绝对差、leetcode501.二叉搜索树中的众数、leetcode236. 二叉树的最近公共祖先
1leetcode530.二叉搜索树的最小绝对差题目链接:530.二叉搜索树的最小绝对差-力扣(LeetCode)文章链接:代码随想录视频链接:你对二叉搜索树了解的还不够!|LeetCode:98.验证二叉搜索树_哔哩哔哩_bilibili思路:定义一个极大值作为结果,然后在中序遍历过程中进行比较出结果1.1自己的
- 2024-11-06红黑树:自平衡的二叉搜索树
简介红黑树(Red-BlackTree)是一种自平衡的二叉搜索树,其中每个节点都有一个颜色属性,可以是红色或黑色。红黑树在计算机科学中被广泛用于各种应用,如关联数组、数据库和调度程序。它们提供了一种有效的方式来保持数据的有序性,同时在插入和删除操作中保持较低的时间复杂度。红黑树
- 2024-11-05洛谷题单指南-二叉堆与树状数组-P1801 黑匣子
原题链接:https://www.luogu.com.cn/problem/P1801题意解读:动态维护一组序列,并随时可以求第k小的值,每次求第k小的顺序是递增的,比如第一次取第1小,然后是第2小,以此类推。解题思路:对于求第k小的问题,已经介绍过几种方案:1、快选算法,每次查询时间复杂度logn,传送门:https://www.cnblogs
- 2024-11-05洛谷题单指南-二叉堆与树状数组-P3378 【模板】堆
原题链接:https://www.luogu.com.cn/problem/P3378题意解读:实现二叉堆。解题思路:二叉堆本质上一棵完全二叉树,根节点称为堆顶,根据特性不同分为有两种:大根堆:所有父节点的值大于子节点,根节点最大小根堆:所有父节点的值小于子节点,根节点最小主要作用:动态维护序列,并快速找到最大/最