文档介绍:二叉树的各种算法
二叉树的各种算法
1/15
二叉树的各种算法
,很少有
真的。你嗜烟成性的时候,只有三种人会高兴,医生你的仇
人和卖香烟的。/*用函
StatusPrintElement(ElemTypee){//输出元素e的值
printf("%d",e);
returnOK;
}//PrintElement
StatusPreOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){
//前序遍历二叉树T的递归算法,对每个数据元素调用函数Visit。
补全代码,可用多个语句
if(T)
{
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit))returnOK;
returnERROR;
二叉树的各种算法
二叉树的各种算法
7/15
二叉树的各种算法
4/15
二叉树的各种算法
二叉树的各种算法
15/15
二叉树的各种算法
}
elsereturnOK;
}//PreOrderTraverse
StatusInOrderTraverse(BiTreeT,Status(*Visit)(ElemType))
{
//中序遍历二叉树T的递归算法,对每个数据元素调用函数Visit。
补全代码,可用多个语句
if(T)
{
if(InOrderTraverse(T->lchild,Visit))
if(Visit(T->data))
if(InOrderTraverse(T->rchild,Visit))
returnOK;
returnERROR;
}
elsereturnOK;
}//InOrderTraverse
StatusPostOrderTraverse(BiTreeT,Status(*Visit)(ElemType)){
//后序遍历二叉树T的递归算法,对每个数据元素调用函数Visit。
补全代码,可用多个语句
if(T)
二叉树的各种算法
二叉树的各种算法
9/15
二叉树的各种算法
5/15
二叉树的各种算法
二叉树的各种算法
15/15
二叉树的各种算法
{
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data))returnOK;
returnERROR;
}
elsereturnOK;
}//PostOrderTraverse
StatusPutout(BiTreeT)
{
PreOrderTraverse(T,PrintElement);
printf("\n");
InOrderTraverse(T,PrintElement);
printf("\n");
PostOrderTraverse(T,PrintElement);
printf("\n");
returnOK;
}
//·非递归算法
structSqStack
{
二叉树的各种算法
二叉树的各种算法
11/15
二叉树的各种算法
6/15
二叉树的各种算法
二叉树的各种算法
15/15
二叉树的各种算法
BiTree*base;//在栈构造之前和销毁之后,base的值为NULL
BiTree*top;//栈顶指针
intstacksize;//当前已分配的存储空间,以元素为单位
};//顺序栈
StatusInitStack(SqStack&S)
{
=(BiTree*)malloc(STACK_INIT_SIZE*sizeof(BiTree));