资源简介
二叉排序树。用二叉链表作存储结构。
要求:
(1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T;
(2)对二叉排序树T作中序遍历,输出结果;
(3)计算二叉排序树T查找成功的平均查找长度,输出结果;
(4)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序
历(执行操作2);否则输出信息“无x”。
代码片段和文件信息
#include
#include
#include
#include
typedef struct Tnode
{
int data; /*输入的数据*/
struct Tnode *lchild*rchild; /*结点的左右指针,分别指向结点的左右孩子*/
}*nodeBSTnode;
int searchBST(node tint keynode fnode *p) /*查找函数*/
{
if(!t) {*p=f;return (0);} /*查找不成功*/
else if(key==t->data)
{
*p=t;return (1);
} /*查找成功*/
else if(key<=t->data)
searchBST(t->lchildkeytp); /*在左子树中继续查找*/
else
searchBST(t->rchildkeytp);/*在右子树中继续查找*/
}
int insertBST(node *tint key) /*插入函数*(t为根节点)*/
{
node p=NULLs=NULL;//p为当前结点,s为要插入的结点
if(!searchBST(*tkeyNULL&p)) /*查找不成功*/
{
s=(node)malloc(sizeof(BSTnode));//malloc 向系统申请分配指定的内存空间
s->data=key;
s->lchild=s->rchild=NULL;
评论
共有 条评论