数据结构第三章

本文详细介绍了二叉树的概念,包括树的定义、术语和表示方法。特别强调了二叉树的特性,如二叉树的五种基本形态、性质以及满二叉树和完全二叉树的区别。此外,还探讨了二叉树的存储结构,如顺序存储和链式存储,并详细阐述了二叉树的四种遍历方法:先序、中序、后序和层序遍历,其中非递归遍历通过堆栈和队列实现。
摘要由CSDN通过智能技术生成

第三章

3.1.1引子

什么是树

客观世界中许多事务存在层次关系

分层次组织在管理上具有更高的效率
数据管理的基本操作之一:查找
如何实现有效率的查找?

查找:根据某个给定的关键字K,从集合R中找出关键字与K相同的记录
静态查找:集合中记录是固定的
》没有插入和删除操作,只有查找
动态查找:集合中记录是动态变化的
》除查找,还可能发生插入和删除

静态查找
方法1:顺序查找

int SequentialSearch(List Tb1, ElementType K){
   
//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;
Tb1->Element[0] = K;//建立哨兵
for(i = Tb1->Length; Tb1->Element[i] != K; i--);
return i;//查找成功返回所在单元下标,不成功返回0
}
typedef struct LNode* List;
struct LNode{
   
ElementType Element[MAXSIZE];
int Length;
};

//顺序查找的一种实现(无“哨兵”)
int SequentialSearch(List Tb1, ElementType K){
   
//在Element[1]~Element[n]中查找关键字为K的数据元素
int i;

for(i=Tb1->Length; i > 0 && Tb1->Element[i] != K; i--);
return i;//查找成功返回所在单元下标,不成功返回0
}

顺序查找算法的时间复杂度为 O ( n ) O(n) O(n)

方法2:二分查找(Binary Search)

》假设n个数据元素的关键字满足有序(比如:小到大)
k 1 < k 2 < . . . < k n k_1 < k_2 < ... < k_n k1<k2<...<kn
并且是连续存放(数组),那么可以进行二分查找

例:假设有13个数据元素,按关键字由小到大顺序存放,二分查找关键字为444的数据元素过程如下:
在这里插入图片描述
1.left = 1, right = 13; mid = (1 + 13) / 2 = 7; 100 < 444;
2.left = mid + 1 = 8, right = 13; mid = (8 + 13) / 2 = 10; 321 < 444;
3.left = mid + 1 = 11, right = 13; mid = (11 + 13) / 2 = 12; 查找结束

找不到的情况
例:任然以上面13个数据元素构成的有序线性表为例
二分查找关键字为43的数据元素如下:
在这里插入图片描述
1.left = 1, right = 13; mid = (1 + 13) / 2 = 7; 100 > 43;
2.left = 1, right = mid - 1 = 6; mid = (1 + 6) / 2 = 3; 39 < 43;
3.left = mid + 1 = 4, right = 6; mid = (4 + 6) / 2 = 5; 51 > 43;
4.left = 4; right = mid - 1 = 4; mid = (4 + 4) / 2 = 4; 45 > 43;
5.left = 4; right = mid - 1 = 3; left > right ? 查找失败,结束;

二分查找算法

int BinarySearch(List Tbl, ElementType K){
   
//在表Tbl中查找关键字为K的数据元素
int left, right, mid, NoFound = -1;

left = 1;//初始左边界
right = Tbl->Length;//初始右边界
while(left &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值