没有合适的资源?快使用搜索试试~ 我知道了~
数据结构与算法实验指导书.docx
2 下载量 45 浏览量
2022-12-15
22:27:34
上传
评论 1
收藏 59KB DOCX 举报
温馨提示
试读
41页
数据结构与算法实验指导书.docx
资源推荐
资源详情
资源评论
上连第Z三堂大竽徽据牯构与算法实脸播导行
计算机与信息学院
实验三树
【实验目的】
熟练掌握在链式二叉树在二叉链表存储结构上的基本操作。
Windows2000 或 Windows XPC 或 C++
【实验内容及要求】
要求采用二叉链表作为存储结构,完成二叉树的建立,前序、中序和后序遍历的操作,求所 有叶子及
结点总数的操作等。具体实现要求:
17 .基于先序遍历的构造算法:输入是二叉树的先序序列,但必须在其中加入虚结点以示空指针 的位置。
假设虚结点输入时用空格字符表示。
18 .用广义表表示所建二叉树。
19 .分别利用前序遍历、中序遍历、后序遍历所建二叉树。
20 .求二叉树结点总数,观察输出结果。
21 .求二叉树叶子总数,观察输出结果。
22 .交换各结点的左右子树,用广义表表示法显示新的二叉树。
23 . (★)二叉树采用链接存储结构,其根结点指针为T,设计一个算法对这棵二叉树的每个结 点赋值:
(注意要修改DataType类型)
a)叶结点的值为3
b)只有左孩子或右孩子的结点那么其值分别等于左孩子或右孩子的值
c)左、右孩子均有的结点,那么其值等于左、右孩子结点的值之和
d)用广义表表示法显示所建二叉树
【参考框架】
#include <stdio.h>
#include <stdlib.h>
〃二叉树的链式存储表示
typedef char DataType;〃应由用户定义DataType的实际类型
typedef struct node
{ DataType data;struct node *lchild, *rchild; 〃左右孩子指针
} BinTNode;〃结点类型
typedef BinTNode *BinTree;
void main()void ListBinTree(BinTree T); //用广义表表示二叉树
void DisplayBinTree(BinTree T); 〃用凹入表表示二叉树
void CreateBinTree(BinTree *T); 〃构造二叉链表 void Preorder(BinTree T);〃前序遍
历二叉树void Inorder(BinTree T);//中序遍历二叉树
void Postorder(BinTree T);〃后序遍历二叉树int nodes(BinTree T);〃计算总结点数
【实验平台】
操作系统:
开发环境:
int leafs(BinTree T);//计算总叶子数BinTree sw叩(BinTree T);〃交换左右子树
B inTree T;
printf("请输入先序序列(虚结点用空格表示):\n"); CreateBinTree(&T);
ListBinTree(T);
printf(
n
\n
n
);Display B inTree(T);
printf("前序遍历:\n
n
);Preorder(T);
printf(
n
\n
n
);printf("中序遍历:\n
H
);
Inorder(T);printf(
n
\n
n
);
printf("后序遍历:\n
n
);Postorder(T);
printf(
H
\n
n
);
printf("二叉树的总结点数为 %d\n”,nodes(T));
printf("二叉树的总叶子结点数为%d\n\leafs(T)); T=swap(T);
ListBinTree(T); printf(
n
\n
n
);
}
〃构造二叉链表
void CreateBinTree(BinTree *T)
(//在此插入必要的语句
}
//用广义表表示二叉树
void ListBinTree(BinTree T)〃在此插入必要的语句
〃用凹入表表示二叉树
void DisplayBinTree(BinTree T) (//在此插入必要的语句
)
〃前序遍历二叉树
void Preorder(B inTree T)
(//在此插入必要的语句
)
〃中序遍历二叉树
void Inorder(B inTree T)
(〃在此插入必要的语句
}
〃后序遍历二叉树
void Postorder(B inTree T)
(〃在此插入必要的语句
}
〃计算总结点数
int nodes(B inTree T)
(//在此插入必要的语句
)
//计算总叶子数
int leafs(BinTree T)//在此插入必要的语句
〃交换左右子树
B inTree swap(B inTree T)
(//在此插入必要的语句
}
【实验报告】《数据结构与算法》实验报告三
学院:班级:
学号:姓名:
日期:程序名:L6LCPP一、上机实验的问题和要求:
要求采用二叉链表作为存储结构,完成二叉树的建立,前序、中序和后序遍历的操作,求所 有叶子及
结点总数的操作等。具体实现要求:
i. 基于先序遍历的构造算法:输入是二叉树的先序序列,但必须在其中加入虚结点以示空指针的位
置。假设虚结点输入时用空格字符表示。
ii. 用广义表表示所建二叉树。
iii. 分别利用前序遍历、中序遍历、后序遍历所建二叉树。
iv. 求二叉树结点总数,观察输出结果。
v. 求二叉树叶子总数,观察输出结果。
vi. 交换各结点的左右子树,用广义表表示法显示新的二叉树。
vii. (★)二叉树采用链接存储结构,其根结点指针为T,设计一个算法对这棵二叉树的每个结点赋值:
(注意要修改DataType类型)
a.叶结点的值为3b.只有左孩子或右孩子的结点那么其值分别等于左孩子或右孩子的值
c.左、右孩子均有的结点,那么其值等于左、右孩子结点的值之和d.用广义表表示法显示所建二
叉树
二、源程序及注释:
三、运行输出结果:
四、调试和运行程序过程中产生的问题及采取的措施:
剩余40页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 691
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功