数据结构 | 期末复习 · 综合题

数据结构 · 综合题

一、树

给定树的两种遍历序列确定树

1)遍历方式操作
限定先左后右
先序遍历 DLR 访问根结点 先序遍历根结点的左子树 先序遍历根结点的右子树
中序遍历 LDR 中序遍历根结点的左子树 访问根结点 中序遍历根结点的右子树
后序遍历 LRD 后序遍历根结点的左子树 后序遍历根结点的右子树 访问根结点
层序遍历 按二叉树的层序编号的次序访问各结点
2)已知树的两种遍历序列确定树

先建立根节点,然后确定左右子树。

A.已知一棵二叉树的先序序列和另一序列

①根据先序序列的第一个元素建立根结点;
②在另一序列中找到该元素,确定根结点的左右子树的序列;
③在另一序列中确定左右子树的序列;
④由左子树的先序序列和另一序列建立左子树;
⑤由右子树的先序序列和另一序列建立右子树。

B.已知一棵二叉树的中序序列和后序序列

①根据后序序列的最后一个元素建立根结点;
②在中序序列中找到该元素,确定根结点的左右子树的序列;
③在中序列中确定左右子树的序列;
④由左子树的后序序列和另一序列建立左子树;
⑤由右子树的后序序列和另一序列建立右子树。

二、堆

1. 定义

定义 一棵完全二叉树的任意一个非终端结点的元素
不小于 ≥ 其左儿子结点和右儿子结点元素 最大堆/大顶堆/大根堆
不大于 ≤ 最小堆/小顶堆/小根堆
结论 最大堆的根结点元素在整个堆中最大
最小堆的根结点元素在整个堆中最小
堆的根结点也称为堆顶

完全二叉树:满二叉树从最后一个结点开始,连续去掉任意个结点构成的二叉树。
非终端结点:非叶子结点(树枝)。

2. 相关的基本操作

//最大堆的类型定义
#define Maxsize 200
typedef struct
{
   
	int key;		//排序关键字,max
	/* other fields */
}elementtype;
typedef struct
{
   
	elementtype elements[Maxsize];
	int n;
}HEAP;

//堆的基本操作(以最大堆为例)
void MaxHeap(HEAP heap)		//创建一个空堆
{
   
  heap.n=0;
}

bool HeapFulls(HEAP heap)		//判断堆是否为满
{
   
	return(heap.n==MaxSize-1);
}

bool HeapEmpty(HEAP heap)		//判断堆是否为空
{
   
    return(!heap.n);
}

void Insert(HEAP heap,Elementtype element)		//插入一个元素 复杂度O(log₂n)
{
   
    int i;		//记录最终插入位置
    
    if(!HeapFull(heap))
    {
   
        i=heap.n+1;		//最初插入位置
        while((i!=1)&&(element>heap.elements[i/2]))		//结点i的双亲结点为 i/2
        {
   
            heap.elements[i]=heap.elements[i/2];		//将双亲复制到现在i的位置
            i/=2;		//更新插入位置i变为原双亲所在位置 i/2
        }
    }
	heap.elements[i]=element;
}

void DeleteMax(HEAP heap)		//删除最大元素
{
   
	int parent=1,child=2;		//双亲位置从根节点开始
	Elementype element, tmp;		//element存储需要删除的元素,tmp存储最后元素
	if(!HeapEmpty(heap))
		element=heap.elements[1];
		tmp=heap.elements[heap.n--];		//删除后少一个元素,n--
		while(child<=heap.n)
		{
   
			if
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
综合试题及答案,帮助大家更好的复习.25、用一组地址连续的存储单元存放的元素一定构成线性表。( ) A ) 平均情况下,快速排序法最快,堆积排序法最节省空间 若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101。Loc(ai)=locl+(i—1)( ) 若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。( )【这是插入的,删除的n-i】 确定串T在串S中首次出现的位置的操作称为串的模式匹配。( 深度为h的非空二叉树的第i层最多有2i-1 个结点。 散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法。 稀疏矩阵压缩存储后,必会失效掉随机存取功能 若一个有向图的邻接矩阵中,对角线以下元素均为0,则该图的拓扑有序序列必定存在。( ) 二叉树可以用0≤度≤2的有序树来表示。 非空双向循环链表中由q所指的结点后面插入一个由p指的结点的动作依次为:p->prior=q, p->next=q->next,q->next=p,q->prior->next←p。( ) 删除非空链式存储结构的堆栈(设栈顶指针为top)的一个元素的过程是依次执行:p=top,top= p->next,free (p)。( ) 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。( ) 在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不与表的个数有关,而与每一块中的元素个数有关 无向图的邻接矩阵是对称的有向图的邻接矩阵是不对称的。( _ D _ C B D D C C A B ( C A B D D C B. C C D 如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是 D D D C A D A D D B A D A B D B C B ( D A B D C 6___ ( C D D __ C A B D 针q所指 C A A D A D B  D A② D A、 )的有限集合 C _B A  C A  C A D ( D C A D B ( B D ( D _ A A ) ( C A ( B ( B D 只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火山锅肥羊卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值