#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode{
char c;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode,*Ptreenode;//创建树结点
typedef struct Line{
Ptreenode p;
struct Line *next;
}Line,*Pline;//创建辅助队列的结点
int main(){
Ptreenode pnew;//指向新申请的树结点
char c;
Ptreenode tree=NULL;//树根
Pline phead=NULL,ptail=NULL,plinenew=NULL,pcur=NULL;
//phead指向队列头,ptail队列尾,plinenew放新申请结点,pcur指向当前树结点
while(scanf("%c",&c)){
if('\n'==c){
break;
}//根据换行符结束循环
pnew=(Ptreenode)calloc(1,sizeof(TreeNode));
//calloc申请空间(大小为1*sizeof())并对空间初始化,赋值0
pnew->c=c;//放数据
plinenew=(Pline)calloc(1, sizeof(Line));
plinenew->p=pnew;
if(NULL==tree){
tree=pnew;
phead=ptail=pcur=plinenew;
}else{
ptail->next=plinenew;
ptail=plinenew;
if(NULL==pcur->p->left){
pcur->p->left=pnew;//pur始终指向的是要插入的结点的位置,如果左子树空就直接插入
}else if(NULL==pcur->p->right){
pcur->p->right=pnew;
pcur=pcur->next;//如果右子树空就插入,然后当前结点满了,让pur指向队列下一个结点
}
}//判断是否第一个数据,是就直接赋给树根然后当队列第一个,不是就加入队列然后让队列尾指针指向其
}
return 0;
}
c语言创建一个二叉树
最新推荐文章于 2024-09-12 09:39:26 发布