C++创建二叉树及操作

C++创建二叉树及操作

ID:47503557

大小:70.50 KB

页数:11页

时间:2020-01-12

C++创建二叉树及操作_第1页
C++创建二叉树及操作_第2页
C++创建二叉树及操作_第3页
C++创建二叉树及操作_第4页
C++创建二叉树及操作_第5页
资源描述:

《C++创建二叉树及操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#defineOK1#defineERROR0#defineOVERFLOW-2typedefcharElemType;constintMaxLength=30;//结点个数不超过30个typedefstructBiTreeNode{ElemTypedata;structBiTreeNode*lchild,*rchild;}BiTreeNode,*BiTree;voidCreateBiTree(BiTree&T){ElemTypech;cin>>ch;if(ch=='#')T=NUL

2、L;else{if(!(T=newBiTreeNode))exit(OVERFLOW);T->data=ch;//生成根结点CreateBiTree(T->lchild);//构造左子树CreateBiTree(T->rchild);//构造右子树}}//CreateBiTreevoidPreOrder(BiTree&T)//递归函数:先序遍历以T为根的二叉树。{if(T!=NULL)//递归结束条件{cout<data<<"";//访问根结点PreOrder(T->lchild);//先序遍历根的左子树PreOrder(T->rchild);//先序遍历根的右子树}}voidInO

3、rder(BiTree&T)//递归函数:中序次序遍历以T为根的子树。{if(T!=NULL)//NULL是递归终止条件{InOrder(T->lchild);//中序遍历根的左子树cout<data<<"";//访问根结点InOrder(T->rchild);//中序遍历根的右子树}}voidPostOrder(BiTree&T)//递归函数:后序次序遍历以T为根的子树。{if(T!=NULL)//NULL是递归终止条件{PostOrder(T->lchild);//后序遍历根的左子树PostOrder(T->rchild);//后序遍历根的右子树cout<data<<""

4、;//访问根结点}}voidLevelOrder(BiTreeT)//层序遍历{BiTreeQ[MaxLength];intfront=0,rear=0;BiTreep;if(T)//根结点入队{Q[rear]=T;rear=(rear+1)%MaxLength;}while(front!=rear){p=Q[front];//队头元素出队front=(front+1)%MaxLength;cout<data<<"";if(p->lchild)//左孩子不为空,入队{Q[rear]=p->lchild;rear=(rear+1)%MaxLength;}if(p->rchild)//右

5、孩子不为空,入队{Q[rear]=p->rchild;rear=(rear+1)%MaxLength;}}}boolComplete(BiTreeT){BiTreeQ[MaxLength];intfront=0,rear=0;BiTreep;if(T==NULL)//根结点入队{returntrue;}else{Q[rear]=T;rear=(rear+1)%MaxLength;while(front!=rear){p=Q[front];//队头元素出队front=(front+1)%MaxLength;if(p){Q[rear]=p->lchild;rear=(rear+1)%MaxLen

6、gth;Q[rear]=p->rchild;rear=(rear+1)%MaxLength;}else{while(front!=rear){p=Q[front];if(p){returnfalse;}else{returntrue;}}}}returntrue;}}intDepth(BiTreeT){intdepthval,depthleft,depthright;if(!T){depthval=0;}else{depthleft=Depth(T->lchild);depthright=Depth(T->rchild);depthval=1+(depthleft>depthright?de

7、pthleft:depthright);}returndepthval;}intCountleaf(BiTreeT){intm,n;if(!T){return0;}if(!T->lchild&&!T->rchild){return1;}else{m=Countleaf(T->lchild);n=Countleaf(T->rchild);return(m+n);}}intCountleafs(BiTreeT){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。