首页 > 其他分享 >查找 - 二叉排序树/平衡二叉树

查找 - 二叉排序树/平衡二叉树

时间:2023-11-30 15:22:57浏览次数:31  
标签:log2 复杂度 二叉 查找 二叉树 key

二叉排序树

性质:中序遍历是递增的

查找

算法实现

BSTree SearchBST(BSTree T, KeyType key) {
    if(!T || key == T->data) return T;
    else if(key < T->data) return SearchBST(T->lchild, key);
    else return SearchBST(T->rchild, key);
}

算法分析

最坏情况:单支树 ASL=(n+1)/2
平均情况:ASL=log2(n)

插入

时间复杂度O(log2(n))

创建

时间复杂度O(nlog2(n))

删除

在不破坏二叉排序树性质的情况下,选择合理的被删结点的左/右孩子对其进行替代。
时间复杂度O(log2(n))

平衡二叉树(AVL树)

平衡因子(BF)

节点左右子树的深度差。
AVL树的所有节点的BF为0/1/-1.
查找的时间复杂度是O(log2(n))

平衡调整方法

调整最小不平衡子树。
书上总结了4中旋转方式(LL,RR,RL,LR),但是完全不需要记,因为很抽象。确定好调整范围后直接进行调整。

标签:log2,复杂度,二叉,查找,二叉树,key
From: https://www.cnblogs.com/ww0809/p/17866481.html

相关文章

  • 查找 - 散列表
    散列表(哈希)相关定义散列表:有限连续的地址空间。冲突:不同关键字对应同一个散列地址。冲突是不可避免的。同义词:发生冲突的不同关键字。构造散列函数原则减少冲突。散列地址分布均匀。常用方法直接定址1)条件:已知关键字每一位的数字分布情况。2)操作:从关键字中提取......
  • 查找算法
    查找1.二分查找二分查找的思路分析有序序列1.首先确定该数组的中间的下标mid=(left+right)/22.然后让需要查找的数findval和arr[mid]比较2.1findval>arr[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找2.2findval<arr[mid],说明你要查找的数在mid的左边,......
  • Linux文件查找,压缩和解压
    关于搜索查找有关的指令find指令从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。基本语法:find[搜索范围][选项]选项说明:选项功能-name按照指定的文件名查找模式查找文件-user查找属于指定用户名所有文件-size按照指定的文件大小......
  • (查找)03-寻找峰值
    1importjava.util.*;23publicclassSolution{4/**5*@paramnumsint整型一维数组6*@returnint整型7*/8publicintfindPeakElement(int[]nums){9//申请左指针10intleft=0;11//申......
  • day1数组理论基础,704. 二分查找,27. 移除元素
    数组理论基础,704.二分查找,27.移除元素1数组理论基础1.1数组概念定义:存放在连续内存空间上的相同类型数据的集合。特点:1.数组中数据类型相同2.数组所占空间连续1.2数组创建2704.二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数......
  • linux文件查找和打包压缩
    1文件查找1.1mlocatelocate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库,遍历整个根文件系统,很消耗资源工作特点:查找速度快;默认模糊查找,支持正则表达式;非实时查找;搜索的是文......
  • Linux文件查找、打包压缩及解压
    打包压缩1. 使用tar命令进行文件打包。基本语法如下:tar-cvf压缩文件名文件1文件2...2. 如果您想同时压缩多个文件,可以使用tar-cf命令:tar-cf压缩文件名.tar文件1文件2...3. 使用gzip或bzip2进行压缩。例如,使用gzip压缩:gzip压缩文件名.tar4. 压缩时添加......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
    LeetCode704二分查找题目链接:LeetCode704左闭右闭:视频讲解:手把手带你撕出正确的二分法思路:在循环条件中注明left<=right,即[left,right]classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0,right=nums.size()-1......
  • Linux文件查找、打包压缩及解压
    1.find命令:2.find命令用于在文件系统中搜索文件和目录。3.例如,要在/home目录下查找所有以.txt结尾的文件,可以使用:find/home-name"*.txt"。4.grep命令:5.grep命令用于在文件中搜索特定模式。6.例如,要在当前目录下的所有文件中查找包含"keyword"的行,可以使用:grep"keyw......
  • 96. 不同的二叉搜索树(中)
    目录题目动态规划题目动态规划由于1,2...n这个数列是递增的,所以我们从任意一个位置“提起”这课树,都满足二叉搜索树的这个条件:左边儿子数小于爸爸数,右边儿子数大于爸爸数。例如,我要用[1,2,3,4,5,6]构建。首先,提起"2"作为树根,[1]为左子树,[3,4,5,6]为右子树,现在就变成了......