数据结构中用c语言建立二叉树的程序

数据结构中用c语言建立二叉树的程序

#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

typedef struct Bnode //二叉树节点类型
{
int m;
struct Bnode *Lchild,*Rchild;
}Btnode, *BTptr;

typedef struct Dnode //队列节点类型
{
Btnode *pr;
struct Dnode *next;
}Qnode,*Qlink;

typedef struct //q节点类型
{
Qnode *front,*rear;
}linkqueue;

void Lcreatqueue(linkqueue *q) //创建队列
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}

Btnode *Getqtop(linkqueue *Q)
{
return(Q->front->pr);
}

void Enqueue(linkqueue *q,Btnode *e) //入队
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->pr=e;
p->next=NULL;
if(q->front==NULL)q->front=p;
else
q->rear->next=p;
q->rear=p;
}

Btnode *DeQueue(linkqueue *q) //出队
{ Qlink p;
if(q->front==q->rear) return(NULL);
else
{
p=q->front;
q->front=p->next;
free(p);
return(q->front->pr);
}
}

BTptr creatbtree(BTptr BT)
{
int i=1;
linkqueue *Q=NULL;
BTptr q;
//BTptr s;
Btnode *p,*Del;
Q=(linkqueue *)malloc(sizeof(linkqueue));
Lcreatqueue(Q);
Q->rear=Q->front=NULL;
BT=NULL;
while(i<=n)
{p=NULL;
p=(BTptr)malloc(sizeof(Btnode));
p->Lchild=p->Rchild=NULL;
p->m=i;
Enqueue(Q,p);
if(i==1)BT=p;
else
{
q=Getqtop(Q); //q指向二叉树的指针
if(p&&q)
if(i%2==0)q->Lchild=p;
else q->Rchild=p;
if(i%2==1) Del=DeQueue(Q);

}
i++;
}

return(BT);
}
main()
{BTptr *p=NULL;
p=creatbtree(p);
}

还是希望你自己会去编一遍
温馨提示:内容为网友见解,仅供参考
无其他回答

数据结构中用c语言建立二叉树的程序
include "stdio.h"include "stdlib.h"include "malloc.h"typedef struct Bnode \/\/二叉树节点类型 { int m;struct Bnode *Lchild,*Rchild;}Btnode, *BTptr;typedef struct Dnode \/\/队列节点类型 { Btnode *pr;struct Dnode *next;}Qnode,*Qlink;typedef struct \/\/q节点类型 { Qnod...

数据结构中关于用c++语言建立二叉树的问题,求代码,急!!!
postOrder(root->RChild);\/*后序遍历右子树*\/ printf("%c",root->data);\/*输出结点*\/ } } void main(){ BiTree T;printf("建立二叉树,请输入序列:\\n");CreateBiTree(&T);printf("\\n输出前序序列为:");preOrder(T);printf("\\n输出中序序列为:");inOrder(T);printf("\\n输出后...

请问C语言如何创建二叉树???
void insert(Tree* tree, int value)\/\/创建树 { Node* node=(Node*)malloc(sizeof(Node));\/\/创建一个节点 node->data = value;node->left = NULL;node->right = NULL;if (tree->root == NULL)\/\/判断树是不是空树 { tree->root = node;} else {\/\/不是空树 Node* temp = tree...

c语言 关于二叉树的创建和遍历(中序遍历)
CreateBiTree(BT,string);\/\/创建二叉树 printf("\\n中序遍历二叉树顺序为: ");inorder(BT);\/\/中序遍历二叉树 printf("\\n");}

关于数据结构C语言二叉树的程序,请人帮忙看看~谢谢
typedef int status; \/\/C中没有status类型,所以想使用这个类型你必须定义它 define OK 0 define ERROR -1 define OVERFLOW -2 \/\/OK、OVERLFLOW、ERROR这些宏的定义头文件中是没有的,所以你必须自己定义它们 typedef struct BiTNode{ char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;ty...

一道数据结构关于二叉树的问题,求写出C语言代码
\/\/先序建立二叉树 BiTree CreateBiTree(){ char ch;BiTree T;scanf("%c",&ch);if(ch=='#')T=NULL;else{ T = (BiTree)malloc(sizeof(BiTNode));T->data = ch;T->lchild = CreateBiTree();T->rchild = CreateBiTree();} return T;\/\/返回根节点 } \/\/先序遍历二叉树 void ...

C语言版数据结构程序设计求大神帮助
\/* 二叉树应用 *\/ #include "stdio.h" #include "stdlib.h" typedef char ElemType; \/* 结点数据的类型 *\/ typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode; \/* 树结点类型 *\/ \/*栈的定义及基本操作*\/ #define MaxSize 100 typedef BiTNode* SElemType; ...

数据结构创建一棵树的c语言代码怎么写?
\/\/以下是建立二叉树存储结构,空节点输入作为#结束标识 Status CreateBiTree(BiTree &T) { \/\/请将该算法补充完整,参见第6章课件算法或课本 char ch;scanf("%c",&ch);if(ch=='#') T=NULL;else{ if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))exit(OVERFLOW);T->data=ch;CreateBiTree(T...

数据结构-二叉树的创建?
二叉树建立实现代码一,如下所示。\/\/创建树\/\/按先后次序输入二叉树中结点的值(一个字符),#表示空树\/\/构造二叉链表表示的二叉树BiTree CreateTree(BiTree t){ char ch; scanf("%c", &ch); if(ch == '#') { t = NULL; } else { t = (BitNode *)malloc...

建立一棵二叉树,数据以字符串形式从键盘输入。
int len,i;\/\/i逐渐增加 void build(int s){ if(i==len) return;\/\/已经建完树了 char c=a[i];\/\/当前的字符 i++;if(!tree[s].l) tree[s].l=c;\/\/如果树的左边是空的,就给左边赋值 else tree[s].r=c;\/\/反之 if(c!=' ') build(c);if(c!=' ') build(c);\/\/...

相似回答