以二叉链表作存储结构,试编程实现前序、中序、后序及层次顺序遍历二叉树的算法。

温柔似野鬼°
708次浏览
2020年08月01日 06:07
最佳经验
本文由作者推荐

坚持英语怎么说-挞责

#include
#include
#include
#define OK 1
#define ERROR 0
#define max 100

typedef char TElemType;

/* 二叉树节点的存储类型 */
typedef struct BiTNodett//define stricture BiTree
{ TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;

int BiTreeEmpty(BiTree T)
{
if(T == NULL)
return 0;
else
return 1;
}


/*建立二叉树*/
int CreateBiTree(BiTree &T)t//createBiTree() sub-function
{ TElemType ch;
cin>>ch;
if(ch=='/') T=NULL;
else
{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
{ cout<<"Overflow!";t//no alloction
return (ERROR);
}
T->data=ch;
CreateBiTree(T->lchild);t//create lchild
CreateBiTree(T->rchild); //create rchild
}
return (OK);
} //CreateBiTree() end

/*前序遍历二叉树的递归算法*/
int PreOrderTraverse(BiTree T)t//PreOrderTravers sub-function
{ if(T)
{ cout<data<<"->"; //visite T
if (PreOrderTraverse(T->lchild))t//traverse lchild
if (PreOrderTraverse(T->rchild))t//traverse rchild
return (OK);
return (ERROR);
} //if end
else
return (OK);
}

int InOrderTraverse(BiTree T)t//InOrderTraverse sub-function
{ if(T)
{ tif (InOrderTraverse(T->lchild))tt//traverse lchild
{ cout<data<<"->";tt//visite T
if(InOrderTraverse(T->rchild))t//traverse rchild
return (OK);
}
return (ERROR);
} //if end
else
return (OK);
} //InOrderTraverse() end

int PostOrderTraverse(BiTree T)t//PostOrderTraverse() sub-function
{ if(T)
{ tif (PostOrderTraverse(T->lchild)) t//traverse lchild
if(PostOrderTraverse(T->rchild))t//traverse rchild
{ cout<data<<"->";tt//visite T
return (OK);
}
return (ERROR);
}
else
return (OK);
} //PostOrderTraverse() end


void LevleOrder(BiTree T){
BiTree Queue[max],p;
int front=0,rear=0;
if(T)
{Queue[rear++]=T;
while(front!=rear){
p=Queue[front++];
printf("%c->",p->data);
if(p->lchild!=NULL)
Queue[rear++]=p->lchild;
if(p->rchild!=NULL)
Queue[rear++]=p->rchild;}
}
}


void DestoryBiTree(BiTree &T)
{
if(BiTreeEmpty(T))
{
DestoryBiTree(T->lchild);
DestoryBiTree(T->rchild);
free(T);
}
}

int main(){
printf("-------------------------------
");
printf("董文来:实验一(1)
");
printf("-------------------------------
");
printf("----------二叉链表作存储结构---------
");

BiTree T;
printf("请输入初始二叉树(按先序):");
CreateBiTree(T);
printf("先序遍历为:");
PreOrderTraverse(T);
cout<printf("中序遍历为:");
InOrderTraverse(T);
cout<printf("后序遍历为:");
PostOrderTraverse(T);
cout<printf("层序遍历为:");
LevleOrder(T);
cout<DestoryBiTree(T);
return 0;
}


蔗蟾-贿赂的意思


1英尺-盘旋读音


糟糕意思-互素是什么意思


与和于的区别-情信


拉普拉斯分布-惊讶的拼音


下午好的英文-消弭的意思


屈服强度符号-什么半句多


牛成语-春蚕指什么