数据结构二叉树的遍历北华大学吕磊Word文档下载推荐.docx
- 文档编号:18186350
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:6
- 大小:15.24KB
数据结构二叉树的遍历北华大学吕磊Word文档下载推荐.docx
《数据结构二叉树的遍历北华大学吕磊Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构二叉树的遍历北华大学吕磊Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。
structBiTNode*lChild,*rChild;
}BiTNode,*BiTree;
typedefstructSqStack
BiTNode*base;
BiTNode*top;
intstacksize;
}SqStack;
//栈类型
voidInitStack(SqStack*S)//创建栈
S->
base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode));
top=S->
base;
stacksize=STACK_INIT_SIZE;
}
intStackEmpty(SqStack*S)//判断栈是否非空
if(S->
top==S->
base)returnOK;
elsereturnERROR;
voidPush(SqStack*S,BiTNodee)//进栈
top-S->
base>
=S->
stacksize)
{
base=(BiTNode*)realloc(S->
base,
(S->
stacksize+STACKINCREMENT)*sizeof(BiTNode));
base+S->
stacksize;
stacksize+=STACKINCREMENT;
}
*(S->
top)=e;
top++;
BiTNodePop(SqStack*S)//出栈
top--;
return*S->
top;
typedefBiTreeQElemType;
//设栈元素为二叉树的指针类型
typedefstruct
QElemType*base;
intfront;
//头指针,若队列不空,指向队列头元素
intrear;
//尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
intInitQueue(SqQueue*Q)//创建队列
(*Q).base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!
(*Q).base)exit(OVERFLOW);
(*Q).front=(*Q).rear=0;
returnOK;
intQueueEmpty(SqQueueQ)//判断队列是否为空
if(Q.front==Q.rear)returnOK;
intEnQueue(SqQueue*Q,QElemTypee)//插入元素e为Q的新的队尾元素
if(((*Q).rear+1)%MAXQSIZE==(*Q).front)returnERROR;
(*Q).base[(*Q).rear]=e;
(*Q).rear=((*Q).rear+1)%MAXQSIZE;
intDeQueue(SqQueue*Q,QElemType*e)//删除Q的队头元素,用e返回其值
if((*Q).front==(*Q).rear)returnERROR;
*e=(*Q).base[(*Q).front];
(*Q).front=((*Q).front+1)%MAXQSIZE;
intCreateBiTree(BiTree&
T)//按先序次序输入二叉中树结点的值,#表示空树构造
charch;
scanf("
%c"
&
ch);
if(ch=='
#'
)T=NULL;
else
if(!
(T=(BiTree)malloc(sizeof(BiTNode))))exit(OVERFLOW);
T->
data=ch;
CreateBiTree(T->
lChild);
rChild);
voidPreOrderTraverse(BiTreeT)//先序遍历二叉树的递归算法
if(T)
printf("
T->
data);
PreOrderTraverse(T->
voidInOrderTraverse(BiTreeT)//中序遍历二叉树的递归算法
InOrderTraverse(T->
printf("
InOrderTraverse(T->
voidPostOrderTraverse(BiTreeT)//后序遍历二叉树的递归算法
PostOrderTraverse(T->
PostOrderTraverse(T->
voidinorder(BiTreeT)//中序非递归遍历二叉树
{SqStackS;
InitStack(&
S);
BiTreep=T;
while(p||!
StackEmpty(&
S))
if(p)
Push(&
S,*p);
p=p->
lChild;
p=(BiTNode*)malloc(sizeof(BiTNode));
*p=Pop(&
%c"
p->
p=p->
rChild;
intmain()//主函数分别实现建立并输出先、中、后序遍历二叉树
BiTreeT;
按先序输入二叉树中结点的值,#表示空结点:
\n"
);
CreateBiTree(T);
先序递归遍历二叉树:
"
PreOrderTraverse(T);
\n中序递归遍历二叉树:
InOrderTraverse(T);
\n后序递归遍历二叉树:
PostOrderTraverse(T);
\n中序非递归遍历二叉树:
inorder(T);
system("
pause"
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉 遍历 大学