2024年3月10日发(作者:)
一 、实验目的和要求
(1)掌握树的相关概念,包括树、节点的度、树的度、分支节点、叶子节点、孩子节点、双亲节
点、树的深度、森林等定义。
(2)掌握树的表示,包括树形表示法、文氏图表示法、凹入表示法和括号表示法等。
(3)掌握二叉树的概念,包括二叉树、满二叉树和完全二叉树的定义。
(4)掌握二叉树的性质。
(5)重点掌握二叉树的存储结构,包括二叉树顺序存储结构和链式存储结构。
(6)重点掌握二叉树的基本运算和各种遍历算法的实现。
(7)掌握线索二叉树的概念和相关算法的实现。
(8)掌握哈夫曼树的定义、哈夫曼树的构造过程和哈夫曼编码的产生方法。
(9)掌握并查集的相关概念和算法。
(10)灵活运用二叉树这种数据结构解决一些综合应用问题。
二、实验内容
注:二叉树b为如图7-123所示的一棵二叉树
b+
A
B
₄
C
E+
F G
I
D
Hd
J
L+
K
M+
N
图7-123+
实验7.1 编写一个程序,实现二叉树的各种运算,并在此基础上设计一个程序
完成如下功能:
(1)输出二叉树b;
(2)输出H节点的左、右孩子节点值;
(3)输出二叉树b的深度;
(4)输出二叉树b的宽度;
(5)输出二叉树b的节点个数;
(6)输出二叉树b的叶子节点个数。
实验7.2设计一个程序,实现二叉树的先序遍历、中序遍历和后序遍历和非递归算法,
以及层次变量里的算法。并对图7-123所示的二叉树b给出求解结果。
实验7.3对如图7-123所示的二叉树,设计一个程序,完成如下功能:
(1)输出所有的叶子节点;
(2)输出所有从叶子节点到根节点的路径;
(3)输出(2)中的第一条最长的路径。
三 、 实验过程描述
实现二叉树的各种的基础程序如下:
的
include《stdio.h》
uinclude
ndefine Maxsize 100
typde char ElemType
typedef struct node
{
ElemType data;
strc node *llld
stuc node rchild
》BTHode;
vld ceaeBNodeBNoe
{
//数据元素
1/指向左孩子
1/指向右孩子
tb chr str) 1 / 由 s t r 串 创 建 二 又 链
BTNode *St[MaxSize],*p=NULL;
int top=-1k,j=8
char ch;
h=HULL; //建立的二又树初始时为空
ch=str[]];
uhile (ch?-'18 ·) //str未扫描完时循环
{
switch ch
{
case (top++St[top=pk=1 break ;
case ):top-- break ;
case ,k-2 break ;
defalt =Bode *)malloc(sizeoF BINode)
p->data-ch;p->ichild-p->rchild-HULL;
if(b==HULL)
b=p;
else
{
//为左结点
//为右结点
//p拍向二叉树的根结点
/7已建立二叉树根结点
swith k
《
case 1:St[top]->1child=p;break;
case 2:St[top]-》rchild=p;break;
}


发布评论