Dr. Dobb's Journal June 1998
(a) typedef struct tnode *Tptr; typedef struct tnode { int val; Tptr lo, hi; } Tnode; (b) int rbstsearch(Tptr p, int t) { if (!p) return -1; if (t == p->val) return 1; if (t < p->val) return rbstsearch(p->lo, t); return rbstsearch(p->hi, t); } (c) int ibstsearch(int t) { Tptr p; for (p=root; p; ) { if (t == p->val) return 1; p=(t<p->val) ? p->lo : p->hi; } return -1; } (d) Tptr rinsert(Tptr p, int t) { if (p) { if (t < p->val) p->lo = rinsert(p->lo, t); else p->hi = rinsert(p->hi, t); } else { p = (Tptr) malloc(sizeof(Tnode)); p->lo = p->hi = 0; p->val = t; } return p; }