C语言数据结构 创建和遍历二叉树 源码(2)

2018-11-21 14:24

}

return OK; }//CreateBiTree

status visit(TElemType e) {

printf(\ return OK; }//visit

status PreOrderTraverse(BiTreeT,status(*visit)(TElemType e)) //先序遍历二叉树T的递归算法 { if(T) {

if(visit(T->data))

if(PreOrderTraverse(T->lchild,visit)) if(PreOrderTraverse(T->rchild,visit)) return OK; //return ERROR; } else

{ printf(\

return OK; }

}//PreOrderTraverse

status MidOrderTraverse(BiTreeT,status(*visit)(TElemType e)) //中序遍历二叉树T的递归算法 { if(T) {

if(MidOrderTraverse(T->lchild,visit)) if(visit(T->data))

if(MidOrderTraverse(T->rchild,visit)) return OK; //return ERROR; } else { printf(\

return OK;

}

}//MidOrderTraverse

status LastOrderTraverse(BiTreeT,status(*visit)(TElemType e)) //后序遍历二叉树T的递归算法 { if(T) {

if(LastOrderTraverse(T->lchild,visit)) if(LastOrderTraverse(T->rchild,visit)) if(visit(T->data)) return OK; //return ERROR; } else { printf(\

return OK; }

}//LastOrderTraverse

status LeafCount(BiTreeT,int&sum)

{ int a; if(T) {

if(T->lchild)LeafCount(T->lchild,sum); else a=1;

if(T->rchild)LeafCount(T->rchild,sum); else if(a==1)sum++; return OK; //return ERROR; } }

status LevelOrderTraverse(BiTreeT,status(*visit)(TElemType e)) {

LinkQueue Q; BiTree p; if(T) { InitQueue(Q); EnQueue(Q,T);

while(!QueueEmpty(Q))

{ DeQueue(Q,p); printf(\

if(p->lchild)EnQueue(Q,p->lchild); if(p->rchild)EnQueue(Q,p->rchild); } DestroyQueue(Q); }

return OK; }

//-----主体程序部分----- intmain() {

int sum=0; BiTree T; CreateBiTree(T); printf(\先序:\\n\PreOrderTraverse(T,visit); printf(\printf(\中序:\\n\MidOrderTraverse(T,visit);

printf(\printf(\后序:\\n\

LastOrderTraverse(T,visit); printf(\printf(\层序:\\n\

LevelOrderTraverse(T,visit); printf(\LeafCount(T,sum); printf(\叶子数:%d\ return 0; }


C语言数据结构 创建和遍历二叉树 源码(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学语文一年级下册说课稿地球爷爷的手

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: