二叉树的各种遍历及直观打印
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一.引言-----------------------------------------------------------------------2
1. 摘要---------------------------------------------------------------------------2
2. 关键字------------------------------------------------------------------------2 二.正文
1. 需求分析-------------------------------------------------------------------------------------------2
2. 数据结构---------------------------------------------------------------------2
3. 算法设计---------------------------------------------------------------------3 3.1概要设计---------------------------------------------------------------------------------------------3
3.2详细设计--------------------------------------------------------------------------------------------4
4. 调试分析----------------------------------------------------------------------6
5. 测试结果----------------------------------------------------------------------6
6.源程序---------------------------------------------------------------------------9
7. 不足之处----------------------------------------------------------------------15
8.设计体会-----------------------------------------------------------------------16 四.参考文献-------------------------------------------------------------------16
一. 引言
二叉树是树形结构的一个重要类型,许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二
叉树,因此,二叉树显得特别重要。
(一).摘要
本算法能创建二叉树,满足对二叉树的层序遍历,并打印层序遍历序列;亦能求出二叉树的深度、叶子数、节点数,并能在WINDOWS 控制台上打印二叉树。
(二).关键字
二叉树、遍历、打印、递归、队列
二.正文
(一). 需求分析
1. 问题描述
设计一个二叉树的遍历以及求二叉树深度、节点数、叶子数的程序,该程序有打印二叉树的功能。
2. 功能
建立二叉树,能够输出二叉树的层序遍历序列,并能求出二叉树的深度、节点数、叶子数和打印二叉树。
3.要求
分别建立二叉树存储结构的输入函数、输出层序遍历序列的函数、输出二叉树深度、节点数、叶子数的函数、打印二叉树的函数。(三). 数据结构
存储结构采用了链式存储,属于链式存储结构:
typedef struct node{
datatype data;
struct node *lchild,*rchild;
}BinTNode;
(四). 算法设计
1. 概要设计
本程序要实现对二叉树的层次遍历以及求解二叉树的深度、节点数、叶子树的算法,并且在程序中要建立二叉树,打印二叉树形状。
本程序中用到的函数:
Creatree()
操作结果:建立一个新的二叉树
V oid TreeDepth()
操作结果:求二叉树的深度、结点数及叶子数
V oid Levelorder()
操作结果:层序遍历二叉树,得出二叉树的层序遍历序列
V oid print()
操作结果:在windows控制台上打印二叉树
主函数流程以及各模块间的关系:
If(ch!=‘@’)
分配内存
s->data=ch;
if(rear=1)
root=s;
else{左孩子=s;或者右孩子=s
}
(2)i nt TreeDepth()
h1为左深度,h2为右深度;
二叉树深度为h1、h2的最大值加1;
节点数=节点数+1(节点数初始值为0); If(h1==0&&h2=0)
叶子数加1;
(3)v oid Levelorder()
根入队;
while(front!=rear)
front出队,输出节点;
if(左孩子不空)
左孩子入队;
If(右孩子不空)
右孩子入队;
(4)void print_btree()
If(T!=NULL)
递归打印右子树、level+1;
for(i=0;i 输出节点; 递归打印右子树、level+1;(4)v oid print() 调用print_btree(); (5)main() 调用creatree()建立二叉树; do {输入0-5个菜单选择; switch(i) case(1):创建二叉树;