【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

本文档详述了一次关于二叉树的实验,包括实验目的、环境、内容和过程。实验中,作者实现了顺序存储和链式存储结构的二叉树,并用递归和层次遍历方法求解树的高度。通过比较,指出顺序结构适合完全二叉树,链式结构更通用。实验深化了作者对二叉树和数据结构的理解。
摘要由CSDN通过智能技术生成

一、实验目的和要求 (源码在最后

要求:
两种及以上存储结构(建议 顺序存储结构和链式存储结构各一)、两种及以上方法(建议 递归遍历和层次遍历方法各一)。分析各代码性能。
抽象数据类型(二叉树)独立模块实现。
其它要求同作业-01要求。

二、实验环境

软件环境:visual stdio 2017
硬件环境:①CPU:Intel(R)Core(TM)i7-8565U CPU @1.80Ghz
②内存:8.0GB

三、实验内容

设计算法并实现求解二叉树高度(深度)。

四、实验过程

4.1 任务定义和问题分析

本次实验需要解决的问题主要为一下三个问题:数据结构的构建,递归遍历的实现,层次遍历的实现。

4.2 数据结构的选择和概要设计

方案一:
顺序存储结构,用一个数组记录二叉树结点值,数组下标记录二叉树编号(下标从1开始用)。递归遍历直接递归,层次遍历直接按层以编号顺序将编号与值一并输出。最终求得高度。
方案二:
链式存储结构,用结构体记录二叉树各结点。递归遍历直接递归,层次遍历以队列为辅助工具,不断入队,出队,达到层次遍历的目的。最终求得高度。

4.3 详细设计

方案一:
①数据结构的构建:
设计成一个class,其中负责记录结点值的数组,其下标为1记录根值,一般的,对于整数i,第2i位(如果存在)为第i位左子结点,2i+1位(如果存在)为第i位右子结点。
②递归遍历的实现:
设计一个递归函数,传入参数为结点标记值i(缺省值为1)其终止条件为:第i位对应结点不存在,返回0。其他情况每次返回各子树的左子树长度和右子树长度的最大值+1。

int GetlengthByRecursion(int i = 1)
	{
		if (i > totalnum || array[i] == ' ') return 0;
		return max(GetlengthByRecursion(2 * i), GetlengthByRecursion(2 * i + 1)) + 1;
	}

③层次遍历的实现:
循环输出各层,即输出各层数组值,同时得到二叉树的高度。

方案二:
①数据结构的构建:
设计成一个struct,内有data记录结点值&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值