今天看了很多数据结构,决定分享一下
先看一个经典的二叉树

1.二叉树简介:

二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质:

1、任意节点左子树不为空,则左子树的值均小于根节点的值;

2、任意节点右子树不为空,则右子树的值均大于于根节点的值;

3、任意节点的左右子树也分别是二叉查找树;

4、没有键值相等的节点;

5、左子树的键值总是小于根的键值,右子树的键值总是大于根的键值。

二叉树_二叉树原理

这是一个普通的二叉查找树,中序遍历可以从小到大的顺序排序输出:2、3、5、6、7、8。

对上述二叉树进行查找,
如查键值为5的记录,先找到根,其键值是6,6>5,因此查找6的左子树,找到3;而5>3,再找其右子树;一共找了3次。
如果按2、3、5、6、7、8的顺序来找同样需求3次。用同样的方法在查找键值为8的这个记录,这次用了3次查找,而顺序查找需要6次。计算平均查找次数得:顺序查找的平均查找次数为(1+2+3+4+5+6)/ 6 = 3.3次,二叉查找树的平均查找次数为(3+3+3+2+2+1)/6=2.3次。
二叉查找树的平均查找速度比顺序查找来得更快。

2.局限性及应用

一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链。如下图:
二叉树_子树_02
大家看上图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线性结构。上图中的平均查找次数为(1+2+3+4+5+5)/6=3.16次,和顺序查找差不多。显然这个二叉树的查询效率就很低,因此若想最大性能的构造一个二叉查找树,需要这个二叉树是平衡的(这里的平衡从一个显著的特点可以看出这一棵树的高度比上一个输的高度要大,在相同节点的情况下也就是不平衡),从而引出了一个新的定义-平衡二叉树AVL。
下一篇文章讲 平衡二叉树
祝你幸福
送你一首歌《青春纪念册》可米小子
附图:内蒙古英仙座流星雨
二叉树_二叉树原理_03