数据结构二叉树程序.doc

上传人:啊飒飒 文档编号:10765998 上传时间:2021-06-03 格式:DOC 页数:5 大小:38.50KB
返回 下载 相关 举报
数据结构二叉树程序.doc_第1页
第1页 / 共5页
数据结构二叉树程序.doc_第2页
第2页 / 共5页
数据结构二叉树程序.doc_第3页
第3页 / 共5页
数据结构二叉树程序.doc_第4页
第4页 / 共5页
数据结构二叉树程序.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构二叉树程序.doc》由会员分享,可在线阅读,更多相关《数据结构二叉树程序.doc(5页珍藏版)》请在三一文库上搜索。

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(stru

2、ct 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

3、;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*

4、 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

5、(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

6、(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)

7、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 () ;Print

8、BTree (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 (

9、)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 ( %c,&x);px=FindBTree(bt,x);if (px) printf (查找成功:%cn,*px);else printf (查找失败:%cn);printf (二叉树的深度为:);printf (%dn,BTreeDepth(bt);ClearBTree(&bt);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1