static void check_tree_recurse(const GtRBTnode *p, unsigned long d_sofar, unsigned long d_total) { if (p == NULL) { gt_assert(d_sofar == d_total); return; } check_tree_recurse (p->left, d_sofar + (unsigned long) (p->left && !p->left->red), d_total); check_tree_recurse (p->right, d_sofar + (unsigned long) (p->right && !p->right-> red), d_total); if (p->left != NULL) { gt_assert(!(p->left->red && p->red)); } if (p->right != NULL) { gt_assert(!(p->right->red && p->red)); } }
static void check_tree_recurse (node p, int d_sofar, int d_total) { if (p == NULL) { assert (d_sofar == d_total); return; } check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total); check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total); if (p->left) assert (!(p->left->red && p->red)); if (p->right) assert (!(p->right->red && p->red)); }
static void check_tree_recurse (node p, int d_sofar, int d_total) { if (p == NULL) { assert (d_sofar == d_total); return; } check_tree_recurse (LEFT(p), d_sofar + (LEFT(p) && !RED(LEFT(p))), d_total); check_tree_recurse (RIGHT(p), d_sofar + (RIGHT(p) && !RED(RIGHT(p))), d_total); if (LEFT(p)) assert (!(RED(LEFT(p)) && RED(p))); if (RIGHT(p)) assert (!(RED(RIGHT(p)) && RED(p))); }
static void check_tree (node root) { int cnt = 0; node p; if (root == NULL) return; root->red = 0; for(p = root->left; p; p = p->left) cnt += !p->red; check_tree_recurse (root, 0, cnt); }
static void check_tree (node root) { int cnt = 0; node p; if (root == NULL) return; SETBLACK(root); for(p = LEFT(root); p; p = LEFT(p)) cnt += !RED(p); check_tree_recurse (root, 0, cnt); }
static void check_tree(const GtRBTnode *root) { unsigned long cnt = 0; GtRBTnode *p; if (root == NULL) { return; } /* gt_assert(!root->red); */ /* root->red = false; */ for (p = root->left; p != NULL; p = p->left) { if (!p->red) { cnt++; } } check_tree_recurse (root, 0, cnt); }