数据结构——树
树
引子
什么是树?
客观世界中许多事物存在层次关系。
例:
人类社会家谱
社会组织结构
图书信息管理
分层次组织在管理上具有更高的效率!
数据管理的基本操作之一:查找。
查找:根据某个给定关键字K,从集合R中重度关键字与K相同的记录。
静态查找:集合中记录是固定的
没有插入和删除操作,只有查找。
动态查找:集合中记录是动态变化的
除查找,还可能发生插入和删除
静态查找
方法1:顺序查找
顺序查找是一种最基本、直接的查找方法。
它从线性表的一端开始,向另一端逐个取出数据元素的关键字,并与要找的关键字K进行比较,以判断是否存在要找的数据元素。
顺序查找算法的时间复杂度为 O ( n ) O(n) O(n)。
方法2:二分查找
是针对线性表中数据的存放是有序的这一特殊性,而采用的一种有效方法。
二分查找是每次在要查找的数据集合中间取出中间元素关键字 K m i d K_{mid} Kmid与K进行比较,根据比较结果确定是否要进一步查找。当K= K m i d K_{mid} Kmid;否则,将在 K m i d K_{mid} Kmid的左半部分或右半部分继续下一步查找。
以此类推,每步的查找范围都将是上一次的一般,因此,二分查找也常常被称为折半查找。
二分查找算法具有对数的时间复杂度 O ( l o g n ) O(log n) O(logn)。
例: 11个元素的二分查找判定树
- 判定树上每个结点需要的查找次数刚好为该结点所在的层数;
- 查找成功时查找次数不会超过判定树的深度;
- n个结点的判定树的深度为 [ l o g 2 n log_2^n log2n]+1;’
- ASL = (4* 4+4* 3+2* 2+1)/11 =3 (ASL 平均成功查找次数)
树的定义、表示和术语
树的定义
树(Tree): n (n>=0)个结点构成的有限集合。
当n=0时,称为空树;
对于任一棵非空树(n>0),它具备以下性质:
1)树中有一个称为“根(Root)”的特殊结点,用 r 表示;
2)其余结点可分为 m(m>0)个互不相交的有限集 T 1 , T 2 , . . . , T m T_1,T_2, ... , T_m