1.先定义一个二叉树结构体
#include <stdio.h>
#include <stdlib.h>
//定义数据类型
typedef char DataType;
//定义二叉树
typedef struct bittree {
DataType data;
struct bittree* lchild, * rchild; //左右子树节点指针
}BinTree;
2.定义二叉树根节点指针
int main()
{
BinTree* T = (BinTree*)malloc(sizeof(BinTree)); //创建二叉树
T = CreateBinTree(T); //接受返回的根结点地址
}
3.先序创建二叉树
//先序创建二叉树
BinTree* CreateBinTree(BinTree *T) {
char data;
printf("请输入当前节点数据:data = ");
scanf_s("%c", &data,1);
getchar(); //用来接收缓冲区内的“回车"
if (data == '#') {
T = NULL; //判断:如果输入的字符串是“#”,将指向孩子节点的指针置空
}
else {
T = (BinTree*)malloc(sizeof(BinTree)); //malloc动态分配内存
if ( T == NULL ) {
printf("分配空间失败\n");
return 0;
}
T->data = data;
T->lchild = CreateBinTree(T->lchild); //接收左孩子节点地址,存放进 T->lchild 左指针内
T->rchild = CreateBinTree(T->rchild); //接收右孩子节点地址,存放进 T->rchild 右指针内
}
return T;
}