创建完全二叉树(C语言)
完整程序:
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
//二叉树的类型定义
typedef int Elemtype;
typedef struct BitNode{
Elemtype data;
struct BitNode *lchild,*rchild;
}BitNode,*BiTree;
//创建二叉链表
int CreatTree(BiTree &T)
{
BiTree s[100],q;//s按照完全二叉树进行编号
int i,x,j;
T=NULL;
printf("输入i,x直到为0为止:\n");
scanf("%d%d",&i,&x);
while(i!=0&&x!=0)
{
q=(BiTree)malloc(sizeof(BitNode));
q->data=x;
q->lchild=NULL;
q->rchild=NULL;
s[i]=q;
if(i==1)
T=q;
else
//i不为1,判断其父节点是谁,偶数连到左孩子 奇数连到右孩子
{
j=i/2;
if(i%2==0)
s[j]->lchild=q;
else
s[j]->rchild=q;
}
scanf("%d%d",&i,&x);
}
return 1;
}
int main()
{
BiTree T;
int m;
m = CreatTree(T);
printf("%d",m);
}
输入方式为:
以先序遍历输出结果:
m= 1,代表创建成功