二叉排序树

二叉排序树(简称BST),也称为二叉查找树。二叉排序树或者为一颗空树,或者为一颗具有下列特性的飞空二叉树:

1.若左子树非空,则左子树上所有节点的关键字均小于根节点的关键字值。

2.若右子树非空,则右子树上所有节点的关键字均小于根节点的关键字值。

3.左右子树本身也是一颗二叉排序树。

/********************二叉排序树********************************/

void BST(BiTree &T)
{
    ElemType x;
    cin>>x;
    while(x!=0)
    {
        CreateBST(T,x);
        cin>>x;
    }
}

int CreateBST(BiTree &T,ElemType x)
{

    if(T==NULL)
    {
        T=new BiTNode;
        T->data=x;
        T->lchild=NULL;
        T->rchild=NULL;
        return 1;
    }
    else
    {
        if(x>T->data)
            CreateBST(T->rchild,x);
        else if(x==T->data)
            return 0;
        else
            CreateBST(T->lchild,x);
    }
}

void BST_Search(BiTree &T,ElemType x,int &n)
{
    if(T)
    {
        n++;
        if(x>T->data)
            BST_Search(T->rchild,x,n);
        else if(x==T->data)
            cout<<"I Find It"<<n<<endl;
        else
            BST_Search(T->lchild,x,n);
    }
    else
    {
        cout<<"I cant't find it"<<endl;
    }
}

原文地址:https://www.cnblogs.com/hutao886/p/4499287.html