⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1234.c

📁 二叉排序树的建立是数据结构中许多二叉树算法实现的基础
💻 C
字号:
#include<stdio.h>
#define null 0
int counter=0;
typedef struct btreenode
{
int data;
struct btreenode  *lchild;
struct btreenode  *rchild;
}bnode;

bnode  *create(int x,bnode *lbt,bnode *rbt)
{
bnode *p;
p=(bnode*)malloc(sizeof(bnode));
p->data=x;
p->lchild=lbt;
p->rchild=rbt;
return(p);
}
bnode *ins_lchild(bnode *p,int x)
{bnode *q;
if(p==null)
printf("Illegal insert.");
else
{
q=(bnode*)malloc(sizeof(bnode));
q->data=x;
q->lchild=null;
q->rchild=null;
/*if(p->lchild!=null)
q->rchild=p->lchild;*/
p->lchild=q;
}
}

bnode *ins_rchild(bnode *p,int x)
{bnode *q;
if(p==null)
printf("Illegal insert");
else
{q=(bnode*)malloc(sizeof(bnode));
q->data=x;
q->lchild=null;
q->rchild=null;
/*if(p->rchild!=null)
q->lchild=p->rchild;*/
p->rchild=q;
}
}


void prorder(bnode *p)
{
if(p==null)
return;
printf("%d\t%u\t%d\t%u\t%u\n",++counter,p,p->data,p->lchild,p->rchild);
if(p->lchild!=null)
prorder(p->lchild);
if(p->rchild!=null)
prorder(p->rchild);
}


 main()
 {
 bnode *bt,*p,*q;
 int x;
 printf("Input root:");
 scanf("%d",&x);
 p=create(x,null,null);
 bt=p;
 scanf("%d",&x);
 while(x!=-1)
 {
 p=bt;
 q=p;
 while(x!=p->data&&q!=null)

{
 p=q;
 if(x<p->data)
 q=p->lchild;
 else
 q=p->rchild;
 }
 if(x==p->data)
 {
 printf("The number is always egxit.");
 return;
 }


 else
 if(x<p->data)
 ins_lchild(p,x);
 else
 ins_rchild(p,x);
 scanf("%d",&x);
 }
 p=bt;
 printf("structure of the binary tree:\n");
 printf("number\t address\t data\t lchild\t rchild\n");
 prorder(p);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -