数据结构课程设计二叉树的建和遍历.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计二叉树的建和遍历

安徽工程大学 数 据 结 构 课 程 设 计 说 明 书 ? ? ? 学生姓名: ?刘超 学 号: 3120702109? 学 院: 计算机与信息学院 专 业: 信息与计算科学 题 目: 二叉树 指导教师 潘海玉 ? ? ? ?2014年8月25日 目录 需求分析-----------------------1 概要设计-----------------------1 详细设计-----------------------3 调试分析-----------------------9 课程总结-----------------------10 附录 -----------------------12 需求分析 问题描述:根据运行时输入的先序序列,创建一棵二叉树,分别对其 进行先序、中序、后序、层序遍历,并显示遍历结果。 void CreateBTree(BTree T) //按先序次序输入,构造二叉树 void PreOrder(BTree T) //递归先序遍历 void InOrder(BTree T) //递归中序遍历 void PostOrder(BTree T) //递归后序遍历 void LevelOrder(BTree T) //层序遍历 void NRPreOrder(BTree bt) //非递归先序遍历 void NRInOrder(BTree bt) //非递归中序遍历 void NRPostOrder(BTree bt) //非递归后序遍历 void main() //二叉树的建立与遍历实现 2.概要设计 此次课程设计遍历算法的框架图 此次课程设计所用的三组二叉树 本设计所使用的存储结构: typedef char ElemType;//定义二叉树结点值的类型为字符型 typedef struct bnode{//二叉链表结构定义 ElemType data; struct bnode *lchild,*rchild; }Bnode,* BTree; typedef struct { BTree ptr; int tag; }stacknode; 3.详细设计 void CreateBTree(BTree T){//按先序次序输入,构造二叉链表表示的二叉树T,#表示空树 char ch; ch=getchar(); if(ch==#) T=NULL;//读入#时,将相应节点指针置空 else{ if(!(T=(Bnode *)malloc(sizeof(Bnode)))) printf(创建失败!);//生成结点空间 T-data=ch; CreateBTree(T-lchild);//构造二叉树的左子树 CreateBTree(T-rchild);//构造二叉树的右子树 } } void PreOrder(BTree T){//递归先序遍历 if(T){ printf(%c ,T-data); PreOrder(T-lchild); PreOrder(T-rchild); } } void InOrder(BTree T){//递归中序遍历 if(T){ InOrder(T-lchild); printf(%c ,T-data); InOrder(T-rchild); } } void PostOrder(BTree T){//递归后序遍历 if(T){ PostOrder(T-lchild); PostOrder(T-rchild); printf(%c ,T-data); } } void LevelOrder(BTree T){//层序遍历 BTree Q[MAX]; int front=0,rear=0; BTree p; if(T){ //根结点入队 Q[rear]=T; rear=(rear+1)%MAX; } while(front!=rear){ p=Q[front]; //队头元素出队 front=(front+1)%MAX; printf(%c ,p-data); if(p-lchild){ //左孩子不为空,入队 Q[rear]=p-lchild; rear=(rear+1)%MAX; } if(p-rchild)

文档评论(0)

junzilan11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档