C語(yǔ)言二叉查找樹問題,在?return searchBST( T->rchild, val, f, p); 處出錯(cuò),求教出錯(cuò)原理,這里應(yīng)該涉及了雙重指針的問題,我理不清。#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);? ? ? ? //運(yùn)行到此處出錯(cuò)? ? ? ? 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;}
C語(yǔ)言二叉查找樹
一執(zhí)1929
2017-10-09 14:26:12