二叉树的简单运算实现

二叉树基本运算的实现算法,依赖于具体的存储结构;采用不同的存储结构,二叉树的基本运算的实现算法是不同的。

这里讨论的运算实现算法,是以二叉链表为存储结构的。

1.设置空二叉树

void setnull(bitree bt)//设置一颗空二叉树,即置头结点的左右孩子链域为空
{
    bt->lchild=NULL;
    bt->rchild=NULL;
}

2.求二叉树的根

elemtype root(bitree bt)//该运算返回二叉树根结点的值,当二叉树为空树时返回NULL
{
    if(bt->lchild==NULL)
        return NULL;
    else 
        return bt->lchild->data;
}

3.建立二叉树操作

bitree create(elemtype x,bitree lbt,bitree rbt)//该运算生成一棵以x为根结点,lbt和rbt分别为左右子树的二叉树
{
    bitree p;//定义局部变量
    p=(bitree)malloc(sizeof(bitnode));//申请一个结点空间,地址传给p指针
    p->data=x;//填x于数据域
    p->lchild=lbt;//把二叉树lbt填入p的左孩子链域
    p->rchild=rbt;//把二叉树rbt填入p的右孩子链域
    return p;//返回建成的二叉树
}

4.插入左孩子

void addlchild(bitree bt,elemtype x)//把元素x插入到二叉树bt中成为它的左孩子
{
    bitree p;
    p=(bitree)malloc(sizeof(bitnode));//申请一个结点空间
    p->data=x;//填入元素x
    p->lchild=NULL;
    p->rchild=NULL;
    bt->lchild=p;//插入bt左孩子域
}

5.删除左孩子

void dellchild(bitree bt)//删除二叉树bt的左孩子,整个左子树全部被删除
{
    bitree p;
    p=bt->lchild;//保存左子树指针
    bt->lchild=NULL;//bt的左孩子域置空
    free(p);//释放左子树空间
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值