| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 二叉查找树(BST),平衡二叉树(AVL),红黑树之间的区别 -> 正文阅读 |
|
[数据结构与算法]二叉查找树(BST),平衡二叉树(AVL),红黑树之间的区别 |
文章目录1. 3者的区别与联系二叉树,二叉查找树(BST),平衡二叉树(AVL),红黑树之间的区别: 根据百度百科给出的定义,它们之间的关系可以用下图表示,平衡二叉树(平衡二叉查找树,AVL)和红黑树都是二叉查找树的一种,区别就是平衡二叉树严格平衡,红黑树是弱平衡。 而AVL树由于实现比较复杂,而且插入和删除性能差,在实际环境下的应用不如红黑树。 2. 二叉查找树(BST)2.1 定义左子树的值小于根节点的值,右子树的值全部大于根节点的值;左右子树分别都是一颗二叉查找树。(递归定义) 3.1.2 缺点可能退化形成单链表,此时搜索效率降低为 O(n) 3.1.3 插入操作若原二叉排序树为空,则直接插入结点;否则,若关键字k小于根结点值,则插入到左子树,若关键字k大于根结点值,则插入到右子树。 新插入的阶段一定是叶子结点。 3.1.4 删除操作(1)被删除的结点为叶子结点,直接删除 (2)被删除的结点只有左或者只有右子树,用其子树顶替其位置 (3)若结点z有左、右两棵子树,则令z的直接后继(或直接前驱)替代z,然后从二叉排序树中删去这个直接后继(或直接前驱),这样就转换成了第一或第二种情况。 PS:这里的直接前驱和直接后继概念来自于中序遍历(左根右),因为二叉排序树的中序遍历就是一个递增的序列。
f 3.2 平衡二叉树(AVL)3.2.1 定义全称是“平衡二叉查找树”,是结构平衡的“二叉查找树”。 结构平衡:树上任一结点的左子树和右子树的高度之差不超过1 节点的 平衡因子 = 左子树高度 - 右子树高度 执行插入和删除操作时,只要不满足上面条件,就需要通过旋转来保持平衡,由于是强平衡,所以旋转操作是十分耗时的,由此可以知道AVL树适合用于插入与删除次数较少的情况,但是查找较多的情况。 3.2.2 平均查找时间复杂度可以证明含有n个结点的平衡二叉树的最大深度为 3.2.3 缺点严格平衡,旋转十分耗时;由于要综合考虑查找和插入,删除的时间复杂度,所以还可以进一步优化。 3.2.4 插入操作执行插入操作之后,有可能导致二叉树不是平衡的,所以需要进行旋转,来调整为平衡二叉树。 总共可以分为以下4中情况: 下面图中,都假设子树的高度为H (1)LL 型 (2)RR 型 (3)LR 型平衡旋转(先左后右双旋转) (4)RL 型平衡旋转(先右后左双旋转) 3.3 红黑树一种自平衡的“二叉查找树”; 红黑树数一种“弱平衡”的二叉树,相较于要求严格平衡的AVL树来说,红黑树大致平衡的,同时引入了颜色这个性质,因此在红黑树上进行插入操作和删除操作引起结构变化时,只需要少量的颜色变换和旋转操作,就可以恢复红黑树的结构。 同时由于是大致平衡,红黑树查找的时间复杂度和AVL树是同一个数量级的,但是在插入和删除操作上有很大的优势,所以综合考虑查找,插入,删除的时间复杂度,红黑树是优于AVL的。
关于红黑树的插入,删除图示可以参考这篇博客: 参考资料: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:45:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |