二叉搜素树

Posted 行尸走肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜素树相关的知识,希望对你有一定的参考价值。

//表示节点的数据结构
struct node
{
    int val;
    node *lch,*rch;
};

//插入数值
node *insert(node *p,int x)
{
    if(p==NULL)
    {
        node *q=new node;
        q->val=x;
        q->lch=q->rch=NULL;
        return q;
    }
    else
    {
        if(x<p->val) p->lch=insert(p->lch,x);
        else p->rch=insert(p->rch,x);
        return p;
    }
}

//查找数值
bool find(node *p,int x)
{
    if(p==NULL) return false;
    else if(x==p->val) return true;
    else if(x<p->val) return find(p->lch,x);
    else if(x>p->val) return find(p->rch,x);
}

//删除数值
node *remove(node *p,int x)
{
    if(p==NULL) return NULL;
    else if(x<p->val) p->lch=remove(p->lch,x);
    else if(x>p->val) p->rch=remove(p->rch,x);
    else if(p->lch==NULL)
    {
        node *q=p->rch;
        delete p;
        return q;
    }
    else if(p->lch->rch==NULL)
    {
        node *q=p->lch;
        q->rch=p->rch;
        delete p;
        return q;
    }
    else
    {
        node *q;
        for(q=p->lch;q->rch->rch!=NULL;q=q->rch);
        node *r=q->rch;
        q->rch=r->lch;
        r->lch=p->lch;
        r->rch=p->rch;
        delete p;
        return r;
    }
    return p;
}

 

以上是关于二叉搜素树的主要内容,如果未能解决你的问题,请参考以下文章

700.二叉搜素树的搜索

二叉搜素树

第95题:不同的二叉搜素树II

二叉搜索树的后序遍历序列 --剑指offer

Mooc数据结构-04树(下)

二叉搜索树的图文详解