typedef struct NODE |
{ |
ElemType elem; /*数据元素字段*/ |
struct NODE *lc,*rc; /*左、右指针字段*/ |
} NodeType; /*二叉树结点类型*/ |
int SearchElem ( NodeType *t,NodeType **p,NodeType **q,KeyType kx ) |
{ /*在二叉排序树t 上查找关键码为kx 的元素,若找到,返回1,且q 指向该结点,p 指向其父结点;*/ |
/*否则,返回0,且p 指向查找失败的最后一个结点*/ |
int flag=0; |
*q=t; |
while ( *q ) /*从根结点开始 |
查找*/ |
{ |
if ( kx> ( *q )->elem.key ) /*kx 大于当前结点*q 的元素关键码*/ |
{ *p=*q; *q= ( *q )->rc; } /*将当前结点*q 的右子女置为新根*/ |
else |
{ |
if ( kx< ( *q )->elem.key ) /*kx 小于当前结点*q 的元素关键码*/ |
{ *p=*q; *q= ( *q )->lc;} /*将当前结点*q 的左子女置为新根*/ |
else {flag=1; break ;} /*查找成功,返回*/ |
} |
} /*while*/ |
return flag; |
} |