平衡二叉树: 二叉树

#include<malloc.h>
#define NULL 0
#include<stdio.h>
struct jd
{
int data;
struct jd *left;
struct jd *right;
};
int n;
void front(struct jd *p)
{
if(p!=NULL)
{
printf("%d",p->data);
front(p->left);
front(p->right);
}
}
void middle(struct jd *p)
{
if(p!=NULL)
{
middle(p->left);
printf("%d",p->data);
middle(p->right);
}
}
void hou(struct jd *p)
{
if(p!=NULL)
{
hou(p->left);
printf("%d",p->data);
hou
(p->right);
}
}
void main()
{

struct jd *p[20];
printf("首先建立一个完全二叉树,请您在下面输入数据,以00表示结束:\n");
int i=1,k=1;
int a;
while(scanf("%d",&a),a!=00)
{
p=(struct jd *)malloc(sizeof(struct jd));
p->data=a;
p->left=NULL;
p->right=NULL;
if(i!=1)
{
if(i%2==0)
p[k]->left=p;
else
p[k++]->right=p;
}
i++;
n++;
}
printf("\n好,二叉树建立成功!\n");

printf("\n先将此二叉树按下列顺序输出:\n");

printf("\n按先序顺序输出为:\n");
front(p[1]);
printf("\n按中序顺序输出为:\n");
middle(p[1]);
printf("\n按后序顺序输出为:\n");
hou(p[1]);
printf("\n按层次顺序输出为:\n");
for(i=1;i<=n;i++)
{
printf("%d",p->data);
}

printf("\n\n然后交换二叉树中所有结点的左、右孩子后:\n");

struct jd *temp;
for(i=1;i<=n;i++)
{
temp=p->left;
p->left=p->right;
p->right=temp;
}
printf("\n再将此二叉树按如下顺序输出:\n");

printf("\n按先序顺序输出为:\n");
front(p[1]);
printf("\n按中序顺序输出为:\n");
middle(p[1]);
printf("\n按后序顺序输出为:\n");
hou(p[1]);
printf("\n按层次顺序输出为:\n");
for(i=1;i<=n;i++)
{
printf("%d",p->data);
}

printf("\n\n整个程序结束!\n");

}
Tags:  完全二叉树 二叉树的遍历 二叉树遍历 平衡二叉树

延伸阅读

最新评论

发表评论