建立二叉树(二叉链表存储)

#include<stdio.h>
#include<stdlib.h>
//二叉链表
//typedef struct BitLink {
// int data;
// struct BitLink* leftChild; //左指针
// struct BitLink* rightChild; //右指针
//}bitlink;
//用二叉链表存储方式建树
typedef struct BitTree {
int data;
struct BitTree* LChild; //左子树
struct BitTree* RChild; //右子树
}bittree;
bittree* createBitTree(bittree* BT) {
BT = (bittree*)malloc(sizeof(bittree));
BT->data = 1;
BT->LChild = (bittree*)malloc(sizeof(bittree));
BT->RChild = (bittree*)malloc(sizeof(bittree));
BT->LChild->data = 2;
BT->LChild->RChild = NULL;
BT->RChild->data = 3;
BT->RChild->LChild = NULL;
BT->RChild->RChild = NULL;
BT->LChild->LChild = (bittree*)malloc(sizeof(bittree));
BT->LChild->LChild->data = 4;
BT->LChild->LChild->LChild= NULL;
BT->LChild->LChild->RChild = NULL;
return BT;
}
void main() {
bittree* myBT = NULL;
myBT = createBitTree(myBT);
printf("树的根节点是:%d\n", myBT->data);
printf("树的叶子节点是:%d,%d\n", myBT->LChild->LChild->data, myBT->RChild->data);
}

使用递归的方式建立:
#include<stdio.h>
#include<stdlib.h>
//用二叉链表存储方式建树(完全二叉树)
typedef struct BitTree {
int data;
struct BitTree* LChild; //左子树
struct BitTree* RChild; //右子树
}bittree;
//创建二叉树
bittree* createBitTree(bittree* BT) {
int num = 0;
scanf("%d", &num);
if (num != -1) { //输入-1代表结束
BT = (bittree*)malloc(sizeof(bittree));
BT->data = num;
printf("输入%d的左结点值:", BT->data);
BT->LChild=createBitTree(BT->LChild);
printf("输入%d的右结点值:", BT->data);
BT->RChild=createBitTree(BT->RChild);
return BT;
}
}
void main() {
bittree* myBT = NULL;
myBT=createBitTree(myBT);
printf("树的根结点是:%d\n", myBT->data);
printf("树的根结点的左结点是:%d\n", myBT->LChild->data);
printf("树的根结点的右结点是:%d\n", myBT->RChild->data);
}


浙公网安备 33010602011771号