Exemplo n.º 1
0
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));
  }
}
Exemplo n.º 2
0
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));
}
Exemplo n.º 3
0
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)));
}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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);
}
Exemplo n.º 6
0
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);
}