C语言二叉查找树问题,在 return searchBST( T->rchild, val, f, p); 处出错,求教出错原理,这里应该涉及了双重指针的问题,我理不清。#include <stdio.h>#include <malloc.h>#define OK 1#define TRUE 1#define ERROR -1#define FALSE 0typedef int ElemType;typedef struct Node{ ElemType data; struct Node *lchild,*rchild;}NODE,*PNODE;//prompt error info and exit.void errorInfo(char str[]){ printf("%s\n",str); exit(-1);}//prompt error if there is an error in locating memoryvoid mallocErr(PNODE p){ if(NULL==p) errorInfo("Error in locating memory.");}//search binary sort treeint searchBST(PNODE T,int val,PNODE *f,PNODE *p){ if(!T) { *p = *f; return FALSE; } else if(val == T->data) { *p = T; return TRUE; }else if(val < T->data) { printf("run this code 52\n"); *f = T; return searchBST(T->lchild,val,f,p); }else { printf("run this code 56\n"); *f = T; printf("run this code 58\n"); printf("T->data : %d \n",T->data); //运行到此处出错 return searchBST( T->rchild, val, f, p); }}int insertBST(PNODE *T,int val){ PNODE p = NULL, s = NULL,f = NULL; int res = 0; res = searchBST(*T,val,&f,&p); if(!res) //val does not exist in the array. { s = (PNODE)malloc(sizeof(NODE)); mallocErr(s); s->data = val; if(!p) //p is null { printf("run this code 75\n"); printf("Create Tree with val:%d\n",val); *T = s; }else if(val < p->data) { printf("run this code 79\n"); printf("Insert Key To Tree(left):%d\n",val); p->lchild = s; }else { printf("run this code 84\n"); printf("Insert Key To Tree(right):%d\n",val); p->rchild = s; } return TRUE; }else //val already exists in the array. { return FALSE; }}int main(){ PNODE T = NULL, p = NULL; insertBST(&T,100); insertBST(&T,199); return 0;}
- 1 回答
- 0 关注
- 1837 浏览
添加回答
举报
0/150
提交
取消