二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx

上传人:b****2 文档编号:2944458 上传时间:2023-05-01 格式:DOCX 页数:7 大小:60.77KB
下载 相关 举报
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第1页
第1页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第2页
第2页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第3页
第3页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第4页
第4页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第5页
第5页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第6页
第6页 / 共7页
二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx

《二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx》由会员分享,可在线阅读,更多相关《二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx(7页珍藏版)》请在冰点文库上搜索。

二叉树中以广义表先序中序后序递归中序非递归输出Word文件下载.docx

typedefstructBiTNode{//二叉链表储存结构

TElemTypedata;

structBiTNode*lchild,*rchild;

}BiTNode,*BiTree;

StatusCreateBiTree(BiTree&

T){//先序序列建立二叉树

charch;

PrintBiTree(T->

lchild);

if(T->

rchild!

=NULL)

{

printf("

"

);

}

rchild);

)"

}

}

StatusPrintElement(TElemTypee){//访问函数

%c"

e);

returnOK;

StatusPreOrderTraverse(BiTreeT,Status(*Visit)(TElemTypee)){//先序遍历二叉树的递归算法

if(T){

if(Visit(T->

data))

//printf("

("

if(PreOrderTraverse(T->

lchild,Visit))

//printf("

if(PreOrderTraverse(T->

rchild,Visit))

//printf("

returnOK;

returnERROR;

}

else

returnOK;

StatusInOrderTraverse(BiTreeT,Status(*Visit)(TElemType)){//中序遍历二叉树的递归算法

if(T){

if(InOrderTraverse(T->

lchild,Visit))

if(Visit(T->

data))

if(InOrderTraverse(T->

rchild,Visit))

}

StatusPostOrderTraverse(BiTreeT,Status(*Visit)(TElemType)){//后序遍历二叉树的递归算法

if(PostOrderTraverse(T->

if(PostOrderTraverse(T->

rchild,Visit))

if(Visit(T->

//中序遍历二叉树的非递归算法

typedefstruct{//栈存储结构及操作

BiTree*base;

BiTree*top;

intstacksize;

}Stack;

StatusInitStack(Stack&

S){//构造空栈

S.base=(BiTree*)malloc(STACK_INIT_SIZE*sizeof(BiTree));

if(!

S.base)exit(OVERFLOW);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

StatusGetTop(StackS,BiTree&

e){//读栈顶元素

if(S.top==S.base)returnERROR;

e=*(S.top-1);

StatusPush(Stack&

S,BiTreee){//入栈

if(S.top-S.base>

=S.stacksize){

S.base=(BiTree*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(BiTree));

if(!

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

*S.top++=e;

StatusPop(Stack&

S,BiTree&

e){//出栈

e=*--S.top;

StatusStackEmpty(StackS){//判栈空

if(S.base==S.top)returnTRUE;

elsereturnFALSE;

StatusInOrderTraverse2(BiTreeT,Status(*Visit)(TElemType)){//中序遍历二叉树的非递归算法

StackS;

BiTreep;

InitStack(S);

Push(S,T);

while(!

StackEmpty(S)){

while(

GetTop(S,p)&

&

p)Push(S,p->

Pop(S,p);

Pop(S,p);

if(!

Visit(p->

data))returnERROR;

Push(S,p->

}

intmain()

{

BiTreeT;

请输入二叉树先序序列:

"

CreateBiTree(T);

\n"

以广义表的形式输出:

PrintBiTree(T);

\n\n"

先序递归遍历顺序:

PreOrderTraverse(T,PrintElement);

中序递归遍历顺序:

InOrderTraverse(T,PrintElement);

后序递归遍历顺序:

PostOrderTraverse(T,PrintElement);

中序非递归遍历顺序:

"

InOrderTraverse2(T,PrintElement);

return0;

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2