#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define False -1
typedef struct BSTNode{
int data;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
int InsertBST(BSTree *T,int e) //插入
{
if(*T==NULL) return False;
BSTree *p,*q;
q=T;
(*p)=(BSTNode*)malloc(sizeof(BSTNode));
(*p)->data=https://bbs.csdn.net/topics/e;
(*p)->lchild=(*p)->rchild=NULL;
if(e==(*q)->data) return 0;
if(e<(*q)->data) InsertBST(&((*q))->lchild,e);
if(e>(*q)->data) InsertBST(&((*q))->rchild,e);
return OK;
}
int CreatBST(BSTree *T,int num[],int n) //創建
{
int i=1;
(*T)=(BSTNode*)malloc(sizeof(BSTNode));
(*T)->data=https://bbs.csdn.net/topics/num[i];
(*T)->lchild=(*T)->rchild=NULL;
for(i=2;i<=n;i++)
InsertBST(T,num[i]); //創建程序即插入結點程序
return OK;
}
int SearchBST(BSTree T,int key) //遞回查找
{
BSTree p=T;
if(p)
{
if(key==p->data)
{
printf("查找成功!\n");
return OK;
}
else if(key<p->data&&p->lchild)
SearchBST(p->lchild,key);
else if(key>p->data&&p->rchild)
SearchBST(p->rchild,key);
else printf("關鍵字不存在!\n");
}
return;
}
int main()
{
BSTree T;
int num[50],n,a,i=1,j,key;
printf("下面請按要求輸入創建二叉排序樹\n");
do{
printf("請輸入一個數字(-1退出回圈):\n");
scanf("%d",&num[i]);
a=num[i];
i++;
n++;
}while(a!=(-1));
n--;
if(CreatBST(&T,num,n)); printf("創建成功!\n"); //創建
printf("請輸入插入數字:\n"); //插入
scanf("%d",&a);
j=InsertBST(&T,a);
if(j==1) printf("\n插入成功!\n");
else if(j==0) printf("資料已存在!無需插入!\n");
else printf("樹空!插入失敗!\n");
printf("請輸入查找關鍵數字:\n"); //查找
scanf("%d",&key);
SearchBST(T,key);
}

這個是問題截圖,仔細檢查感覺指標上好像沒有問題啊?
希望幫忙看一下,解釋一下!!非常感謝!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241612.html
標籤:C語言
