コード例 #1
0
ファイル: rb_tree.c プロジェクト: danielandefors/c-rb-tree
void rb_insert_case4(struct rb_tree_node *n)
{
  struct rb_tree_node * p = n->parent;
  struct rb_tree_node * g = p->parent;
  if ((n == p->right) && (p == g->left)) {
    rb_rotate_left(p);
    n = n->left;
  } else if ((n == p->left) && (p == g->right)) {
    rb_rotate_right(p);
    n = n->right;
  }
  rb_insert_case5(n);
}
コード例 #2
0
ファイル: wmem_tree.c プロジェクト: dot-Sean/wireshark-http2
static void
rb_insert_case4(wmem_tree_t *tree, wmem_tree_node_t *node)
{
    wmem_tree_node_t *parent, *grandparent;

    parent      = node->parent;
    grandparent = parent->parent;
    if (!grandparent) {
        return;
    }

    if (node == parent->right && parent == grandparent->left) {
        rotate_left(tree, parent);
        node = node->left;
    }
    else if (node == parent->left && parent == grandparent->right) {
        rotate_right(tree, parent);
        node = node->right;
    }

    rb_insert_case5(tree, node);
}