利用先序遍历算法建立如图所示二叉树,并对二叉树进行先序遍历.

论坛 期权论坛 期权     
裤裆失火   2018-4-26 14:04   1652   1

分享到 :
0 人收藏

1 个回复

倒序浏览
2#
油条大巴  3级会员 | 2018-4-30 01:53:12 发帖IP地址来自
//聽创建二叉树,输入先序遍历序列:ABC##DE#G##F###
//聽先序遍历输出节点:ABCDEGF
//聽作为对比参考:
//聽中序遍历输出节点:CBEGDFA
//聽后序遍历输出节点:CGEFDBA
#include
#include
typedef聽struct聽Node
{
聽聽聽聽char聽data;
聽聽聽聽struct聽Node聽*lchild;
聽聽聽聽struct聽Node聽*rchild;
}Bitree;
//用"先序遍历"算法创建二叉树
void聽CreateBiTree(Bitree聽**bt)
{
聽聽聽聽char聽s;
聽聽聽聽scanf("%c",&s);聽//输入数据
聽聽聽聽if(s=='#')聽//'#'是空节点,或者称为"虚有"的节点
聽聽聽聽聽聽聽聽*bt=NULL;
聽聽聽聽else
聽聽聽聽{
聽聽聽聽聽聽聽聽*bt=(Bitree聽*)malloc(sizeof(Bitree));
聽聽聽聽聽聽聽聽(*bt)->data=s;
聽聽聽聽聽聽聽聽CreateBiTree(&((*bt)->lchild));
聽聽聽聽聽聽聽聽CreateBiTree(&((*bt)->rchild));
聽聽聽聽}
}
//用"先序遍历"输出节点
void聽preOrder(Bitree聽*ptr)
{
聽聽聽聽if(ptr!=NULL)
聽聽聽聽{
聽聽聽聽聽聽聽聽printf("%c",ptr->data);
聽聽聽聽聽聽聽聽preOrder(ptr->lchild);
聽聽聽聽聽聽聽聽preOrder(ptr->rchild);
聽聽聽聽}
}
//用"中序遍历"输出节点
void聽inOrder(Bitree聽*ptr)
{
聽聽聽聽if(ptr!=NULL)
聽聽聽聽{
聽聽聽聽聽聽聽聽inOrder(ptr->lchild);
聽聽聽聽聽聽聽聽printf("%C",ptr->data);
聽聽聽聽聽聽聽聽inOrder(ptr->rchild);
聽聽聽聽}
}
//用"后序遍历"输出节点
void聽postOrder(Bitree聽*ptr)
{
聽聽聽聽if(ptr!=NULL)
聽聽聽聽{
聽聽聽聽聽聽聽聽postOrder(ptr->lchild);
聽聽聽聽聽聽聽聽postOrder(ptr->rchild);
聽聽聽聽聽聽聽聽printf("%C",ptr->data);
聽聽聽聽}
}

int聽main()
{
聽聽聽聽Bitree聽*root;
聽聽聽聽printf("创建二叉树,输入先序遍历序列:");
聽聽聽聽CreateBiTree(&root);

聽聽聽聽printf("先序遍历输出节点:聽");
聽聽聽聽preOrder(root);

聽聽聽聽//以下的"中序遍历"和"后序遍历"是作为对比参考
聽聽聽聽printf("\n\n中序遍历输出节点:聽");
聽聽聽聽inOrder(root);
聽聽聽聽printf("\n后序遍历输出节点:聽");
聽聽聽聽postOrder(root);

聽聽聽聽printf("\n");
聽聽聽聽return聽0;
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP