二叉排序树
1.需求分析:
假设给定一个数列 [36,65,18,7,60,89,43,57,96,52,74],能够有效的完成对数据的查询和添加。
2.思路分析:
使用数组:
1、使用未排序数组可以直接将数组插入到数组尾端,速度快,但是查找慢
2、使用排序好数组,查询比较快,但是插入新数据时,需要整体移动后,插入有效的位置,过程比较慢
使用链表:
链表特点是插入数据比较方便,但是查询数据比较慢
3.二叉排序树介绍:
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。
如果有相同的值,可以将该节点放在左子节点和右子节点上。
同一集数据对应的二叉排序树不唯一。但经过中序遍历得到的关键码序列都是一个递增序列。
4.排序:
例如,假设原二叉排序树为空树,在对动态查找表 {3,5,7,2,1} 做查找以及插入操作时,可以构建出一个含有表中所有关键字的二叉排序树。
5.删除:
其中二叉排序树是一个动态树表,其特点就是树的结构不是一次生成的,而是在查找过程中,如果关键字不在树表中,在把关键字插入到树表中。而对于删除操作,它分为三种情况
1.删除结点为叶子结点(左右子树均为NULL),所以我们可以直接删除该结点,如下图所示:
2.删除结点只有左子树或者右子树,此时只需要让其左子树或者右子树直接替代删除结点的位置,称为删除结点的双亲的孩子,就可以了,如下图所示:
3.当要删除的那个结点,其左右子树都存在的情况下,则要从从左子树中找出一个最大的值那个结点来替换我们需要删除的结点,如下图所示:
6.代码实现:
运行结果:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/95080.html