美文网首页
简单易懂的图解数据结构——二叉查找树/二叉排序树

简单易懂的图解数据结构——二叉查找树/二叉排序树

作者: bobc | 来源:发表于2020-04-11 21:43 被阅读0次

使用提问和图解的方式介绍二叉查找树和二叉排序树。

阅读前需要的具备哪些知识 ?

1.知道“树”这个数据结构是什么。
2.熟悉二叉树的特点,不熟悉也没关系,知道是个什么就行。
2.认识中文、字母、阿拉伯数字等。

什么是二叉查找树?

二叉查找树又叫二叉排序树。它是一种树型数据结构。抽象成图片如下图:


二叉查找树

二叉树有以下特点:
1、任意节点的左子节点都小于它。
2、任意节点的右子节点都大于它。
3、任意节点的左右子树都是二叉查找树。(其实满足上面两点也就基本满足了这个)

为什么二叉查找树要有上面的这三个特点呢?因为如果具有了这三个特点的,那么这棵树就相当于存储了一个排序好的数据了。这样在查找的时候,就能使用二分法进行查找。如果不知道什么是二分法,建议先稍微理解一下二分法是怎么查找数据的。简单来说就是在一组排序好的数据中每次查找的时候都把需要查找的数据分成两份。比如在[1,2,3,4,5]中查找4,第一次查找就把1到5分成两份,比对3。如果比3大那么在把3后面的分成两份再比较中间的,依次套娃。

二叉查找树有什么优点呢?

二叉查找树可以让我们更快的在一堆数据中找到想要的某个数据。
举个例子:
上图的二叉查找树中存有[1,2,3,4,5,6,7]这7个数据,每个数据代表一个节点,我现在要在这7个数据查到3这个数据。查找步骤如下:

  1. 首先,跟根节点的4比较,发现3<4,所以下一步查找4节点的左孩子2节点。(为什么要查找左孩子,参照上面二叉树的的特点1)
  2. 跟2节点比较,发现3>2,所以下一步查找2节点的右孩子3节点。(为什么要查找右孩子,参照上面二叉树的的特点2)
  3. 跟3节点比较,发现3=3,至此对比三次,找到想要的数据了。


    二叉查找树动画

从上面的例子我们看出来,在七个数据中查找“3”我们只查找了三次。二叉查找树利用了二分法的思想。在一个二叉查找树中查找所需的数据,最大查找次数等于二叉树的高度。(如上面例子中的树的高度是3,很容易理解什么是树的高度)

二叉查找树怎么插入数据呢?

向二叉查找树中插入数据和在其中查找数据类似,依次对比,然后按照二叉树的特点插入指定位置。
比如在上面的二叉查找树中插入8。


二叉查找树动画

二叉查找树有什么缺陷吗?

当然有,如果你只按照上面的特点去用代码实现一个二叉查找树,那么是会有缺点的。
来举个例子:
首先给一个初始的二叉查找树,如下图:


初始二叉查找树

按照之前的方法在初始的二叉查找树种插入数字6。


二叉查找树动画
再添加7、8、9。
缺陷二叉查找树
我去,所有的节点都倾向于同一边了,这样看都快变成一个链表了。
这样就失去了二叉查找树的优势了,查找效率特别低下。

怎么解决这些缺陷呢?

我们可以结合平衡的概念,将二叉查找树升级成(avl)平衡二叉查找树。

会在下一文,介绍完平衡二叉查找树后贴出平衡二叉查找树的实现代码。


欢迎提出意见。

相关文章

  • 简单易懂的图解数据结构——二叉查找树/二叉排序树

    使用提问和图解的方式介绍二叉查找树和二叉排序树。 阅读前需要的具备哪些知识 ? 1.知道“树”这个数据结构是什么。...

  • C++二叉排序树

    前言 二叉排序树又叫二叉搜索树, 二叉查找树, 二叉树数据结构中相对简单的一种,一般情况下查询效率比链表高,二叉排...

  • 算法和数据结构1.8二叉查找树

    二叉查找树(二叉搜索树或二叉排序树)是一种数据结构。采用了图的树形结构。数据存储于二叉查找树的各个结点中。 二叉查...

  • 13、红黑树的理解

    在理解红黑树之前,先看一些二叉查找树 一、二叉查找树 二叉查找树,也称二叉搜索树,或二叉排序树。其定义也比较简单,...

  • Binary Search Tree

    如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为 ,其查找效率为 ,近似于折半查找。如果二叉排序树完全不平衡...

  • 二叉排序树

    1、二叉树的二叉链表结点结构定义 2、二叉排序树--查找 递归查找二叉排序树T中,是否存在key;指针f指向T的双...

  • 数据结构题目59:二叉排序树的查找

    题目:二叉排序树的查找。解题思路:其查找过程是:若二叉排序树为空,则查找失败,结束查找,返回信息null;否则,将...

  • 数据结构学习第四弹 二叉排序树

    二叉排序树又称为二叉搜索树或二叉查找树,这是一种插入、删除和检索记录效率都很高的树结构 二叉排序树概念 二叉排序树...

  • 二叉查找树与平衡二叉树详解

    一、二叉查找树 1、定义:二叉查找树,也称二叉搜索树,或二叉排序树。其定义也比较简单,要么是一颗空树,要么就是具有...

  • 二叉查找树

    一、二叉查找树(BTS) 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Searc...

网友评论

      本文标题:简单易懂的图解数据结构——二叉查找树/二叉排序树

      本文链接:https://www.haomeiwen.com/subject/zoypmhtx.html