还是被二叉搜索树难住了,结果出不来,求教各位大佬到底哪错了

这次是用插入法创建二叉搜索树

#include<stdio.h>
#include<stdlib.h>

int flag;

typedef int elemtype;

typedef struct B
{
    elemtype data;
    struct B *lchild,*rchild;
}BiTNode,*BiTree;

void Init_BST(BiTree *BST)
{
    *BST=NULL;
}


int Search_BST(BiTree *BST,BiTree *p,BiTree *q,elemtype key)
{
    //int flag=0;
    if(*BST==NULL)
        {
        return 0;
        }


    else if((*BST)->data ==key)
    {
        *q=*BST;
        return 1;
    }

    else if(key>(*BST)->data)
        {
        *p=*BST;
        Search_BST(&(*BST)->rchild,p,q,key);
        }

    else if(key<(*BST)->data)
        {
        *p=*BST;
        Search_BST(&(*BST)->lchild,p,q,key);
        }
}


int Insert_BST(BiTree *BST,elemtype key)
{
    //int flag=0;
    BiTree p,q,s;
    p=*BST;
    if(Search_BST(BST,&p,&q,key))
        {
        printf("¸Ãkey=%dÒÑ´æÔÚ\n",key); 
        flag=0;
        }

    else 
    {
        s=(BiTree)malloc(sizeof(BiTNode));
        s->data=key;
        s->lchild=s->rchild=NULL;
        if(p==NULL)
        {   
        *BST=s;
        }
        else if(key<p->data)
        {
            p->lchild=s;
        }
        else
        {
            p->rchild=s;
        }
        flag=1;
    }
    return flag;
}

int Create_BST(BiTree *BST,elemtype kx[],int n)
{
    for(int i;i<n;i++)
     {
     Insert_BST(BST,kx[i]);
     }
     return 1;
}

int main()
{
    BiTree BST;
    Init_BST(&BST);
    BiTree root=BST;
    int kx[5]={1,2,3,4,5};
    Create_BST(&BST,kx,5);
    printf("%d\n",root->data);
    return 0;
}

1个回答

检查一遍发现错的太多了,知道解决方案了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问