二叉树的各种遍历及直观打印

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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):创建二叉树;

相关文档
最新文档