数据结构二叉树程序.doc_第1页
数据结构二叉树程序.doc_第2页
数据结构二叉树程序.doc_第3页
数据结构二叉树程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#define QueueMaxSize 20#define StackMaxSize 10typedef char ElemType;struct BTreeNodeElemType data; struct BTreeNode* left;struct BTreeNode* right;/*前序遍历*/void Preorder(struct BTreeNode * BT)if(BT!=NULL)printf(%c ,BT-data);Preorder(BT-left);Preorder(BT-right);/*中序遍历*/void Inorder(struct BTreeNode * BT)if(BT!=NULL)Inorder(BT-left);printf(%c ,BT-data);Inorder(BT-right);/*后序遍历*/void Postorder(struct BTreeNode * BT)if(BT!=NULL)Postorder(BT-left);Postorder(BT-right);printf(%c ,BT-data);/*按层遍历*/void Levelorder(struct BTreeNode * BT)struct BTreeNode * p;struct BTreeNode * qQueueMaxSize;int front=0,rear=0;if(BT!=NULL)rear=(rear+1)%QueueMaxSize;qrear=BT;while (front!=rear)front=(front+1)%QueueMaxSize;p=qfront;printf(%c ,p-data);if(p-left!=NULL)rear=(rear+1)%QueueMaxSize;qrear=p-left;if(p-right!=NULL)rear=(rear+1)%QueueMaxSize;qrear=p-right;/*初始化二叉树*/void InitBTree(struct BTreeNode* BT)*BT=NULL;/*建立二叉树*/void CleateBTree(struct BTreeNode* BT,char* a)struct BTreeNode* p;struct BTreeNode* sStackMaxSize;int top=-1;int k ;int i=0;*BT=NULL;while (ai)switch (ai) case :break ;case (:if (top=StackMaxSize-1) printf (栈空间太小,需要增加StackMaxSize!n);exit (1);top+ ; stop=p; k=1;break ;case ):if (top=-1) printf (二叉树广义表字符串错!n);exit (1);top- ; break ;case ,:k=2; break ;default:p=(struct BTreeNode *)malloc(sizeof(struct BTreeNode);p-data=ai; p-left=p-right=NULL;if (*BT=NULL) *BT=p;else if (k=1) stop-left=p;else stop-right=p; /*switch end*/i+;/*检查二叉树是否为空*/int BTreeEmpty(struct BTreeNode* BT)if (BT=NULL) return 1 ;else return 0 ;/* 求二叉树深度 */int BTreeDepth(struct BTreeNode* BT)if(BT=NULL)return 0;else int dep1=BTreeDepth(BT-left);int dep2=BTreeDepth(BT-right);if(dep1dep2)return dep1+1;elsereturn dep2+1;/*从二叉树中查找值为x的结点,若存在则返回元素存储位置,否则返回控值*/ElemType* FindBTree(struct BTreeNode* BT,ElemType x)if (BT=NULL) return NULL;else if (BT-data=x) return &(BT-data); else ElemType* p;if (p=FindBTree(BT-left,x) return p ;if (p=FindBTree(BT-right,x) return p ;return NULL ; /*输出二叉树*/void PrintBTree(struct BTreeNode* BT)if (BT!=NULL) printf (%c,BT-data);if(BT-left!=NULL | BT-right!=NULL)printf () ;PrintBTree (BT-left) ;if (BT-right!=NULL) printf (,);PrintBTree(BT-right);printf ();/*清除二叉树,使之变为一课空树*/void ClearBTree(struct BTreeNode* BT)if (*BT!=NULL) ClearBTree(&(*BT)-left); ClearBTree(&(*BT)-right);free(*BT);*BT=NULL;/*假定采用如下程序调试上述对二叉树操作的各种算法*/*#include 二叉树操作.c */ /*该程序文件保存有对二叉树运算的各种算法*/void main ()struct BTreeNode* bt;char b50;ElemType x ,*px;InitBTree(&bt) ;printf (输入二叉树广义表字符串:n);scanf (%s,b);CleateBTree(&bt,b);PrintBTree(bt);printf (n);printf (前序:);Preorder(bt); printf (n);printf (中序:);Inorder(bt); printf (n);printf (后序:);Postorder(bt); printf (n);printf (按层:);Levelorder(bt); printf (n);printf (输入一个待查的字符:n);scanf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论