#include <stdlib.h>
#define ElemType int
typedef struct BSTNode {
ElemType data;
struct BSTNode *lchild, *rchild;
} BSTNode, *BST;
BST Search(BST r, ElemType key, BST p) {
p = NULL;
while (r && r->data != key) {
p = r;
if (r->data < key) {
r = r->lchild;
} else { r = r->rchild; }
}
return p;
}
BST SearchRecur(BST r, ElemType key) {
if (!r) return NULL;
if (r->data == key) return r;
if (r->data < key) return SearchRecur(r->lchild, key);
else return SearchRecur(r->rchild, key);
}