二叉树
实现一个二叉查找树,并且支持插入、删除、查找操作
//实现一个二叉查找树,并且支持插入、删除、查找操作
typedef char datatype
typedef struct Bnode
{
datatype data;
struct Bnode *Lchild, *Rchild;
}Btnode, *BTptr;
CreateLBtree(BTptr BT) //建立以BT为根节点指针的二叉链表结构
{
datatype ch; int i = 0;
BTptr p, q;
Clearqueue(Q); //置队Q为空
BT = NULL; //置空树
ch = getchar(); //读入数据
while(ch != '#')
{
p = NULL; //p为新节点的地址,但空节点地址为NULL
if(ch != '@')
{
p = (BTptr)malloc(sizeof(BTnode)); //申请新节点
p -> data = ch; //存入数据
p -> Lchild = p -> Rchild = NULL;
}
i++; //节点序号计数
Enqueue(q, p); //新节点地址或虚节点地址(NULL)进队
if(i == 1) BT = p; //第一输入节点为根
else
{
q = Getqtop(Q); //取队头元素
if(p && q)