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

更新时间:2023-06-30 14:21:36 阅读: 评论:0

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define max 100
typedef char TElemType;
/* 二叉树节点的存储类型 */
typedef struct BiTNode  //define stricture BiTree
{  TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
int BiTreeEmpty(BiTree T)
{
if(T == NULL)
return 0;
el
return 1;
}
/*建立二叉树*/
int CreateBiTree(BiTree &T) //createBiTree() sub-function
{  TElemType ch;
cin>>ch;
if(ch=='/')  T=NULL;
el
{  if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
{  cout<<"Overflow!"; //no alloction
return (ERROR);
}
T->data=ch;
CreateBiTree(T->lchild); //create lchild
富贵成语CreateBiTree(T->rchild);  //create rchild
}
牛肉馄饨
return (OK);
} //CreateBiTree() end
全国小学生广播体操/*前序遍历二叉树的递归算法*/
int PreOrderTraver(BiTree T) //PreOrderTravers sub-function
{  if(T)
{  cout<<T->data<<"->";                    //visite T
if (PreOrderTraver(T->lchild)) //traver lchild
if (PreOrderTraver(T->rchild)) //traver rchild
return (OK);
return (ERROR);
} //if end
el
return (OK);
}
int InOrderTraver(BiTree T) //InOrderTraver sub-function
{  if(T)
{  if (InOrderTraver(T->lchild))  //traver lchild
{  cout<<T->data<<"->";  //visite T
PGA封装if(InOrderTraver(T->rchild)) //traver rchild
return (OK);
}
枯叶蝴蝶return (ERROR);
} //if end
el
return (OK);
} //InOrderTraver() end
int PostOrderTraver(BiTree T) //PostOrderTraver() sub-function
{  if(T)
{  if (PostOrderTraver(T->lchild))  //traver lchild
if(PostOrderTraver(T->rchild)) //traver rchild
{    cout<<T->data<<"->";  //visite T
return (OK);
}
return (ERROR);
}
el
return (OK);
} //PostOrderTraver() 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("-------------------------------\n");
printf("董文来:实验一(1)\n");
printf("-------------------------------\n");
printf("----------二叉链表作存储结构---------\n");
BiTree T;
printf("请输入初始二叉树(按先序):");
CreateBiTree(T);
printf("先序遍历为:");
PreOrderTraver(T);
cout<<endl;
printf("中序遍历为:");
InOrderTraver(T);
cout<<endl;
printf("后序遍历为:");
PostOrderTraver(T);
恍然大悟的拼音cout<<endl;
printf("层序遍历为:");
LevleOrder(T);
cout<<endl;
DestoryBiTree(T);
return 0;
}

本文发布于:2023-06-30 14:21:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1070312.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:二叉树   遍历   前序
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图