mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
莫名其妙调试通过了!WC
This commit is contained in:
parent
63320bd01e
commit
8f5a994802
24
src/tree.c
24
src/tree.c
@ -1416,8 +1416,11 @@ static struct _tree_node* tree_turn_left(struct _tree* self, struct _tree_node*
|
||||
{
|
||||
assert(self != NULL);
|
||||
assert(root != NULL);
|
||||
assert(root->right != NULL);
|
||||
struct _tree_node* node = root->right;
|
||||
if(node == NULL)
|
||||
{
|
||||
return root;
|
||||
}
|
||||
|
||||
if(root->parent != NULL)
|
||||
{
|
||||
@ -1445,8 +1448,11 @@ static struct _tree_node* tree_turn_right(struct _tree* self, struct _tree_node*
|
||||
{
|
||||
assert(self != NULL);
|
||||
assert(root != NULL);
|
||||
assert(root->left != NULL);
|
||||
struct _tree_node* node = root->left;
|
||||
if(node == NULL)
|
||||
{
|
||||
return root;
|
||||
}
|
||||
|
||||
if(root->parent != NULL)
|
||||
{
|
||||
@ -1528,6 +1534,10 @@ static bool tree_avl_rebalance(struct _tree* self, struct _tree_node* root)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if(root->left == NULL && root->right == NULL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
tree_set_balance(self, root);
|
||||
int balance = root->balance;
|
||||
@ -1725,6 +1735,10 @@ static bool tree_avl_delete_single_child(struct _tree* self, struct _tree_node*
|
||||
node->right->parent = node->parent;
|
||||
node->parent->left = node->right;
|
||||
}
|
||||
else
|
||||
{
|
||||
node->parent->left = NULL;
|
||||
}
|
||||
}
|
||||
else if(node->parent->right == node)
|
||||
{
|
||||
@ -1738,6 +1752,10 @@ static bool tree_avl_delete_single_child(struct _tree* self, struct _tree_node*
|
||||
node->right->parent = node->parent;
|
||||
node->parent->right = node->right;
|
||||
}
|
||||
else
|
||||
{
|
||||
node->parent->right = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
self->rebalance(self, node->parent);
|
||||
@ -1801,6 +1819,8 @@ bool tree_avl_delete(struct _tree* self, void* obj)
|
||||
{
|
||||
node->parent->right = NULL;
|
||||
}
|
||||
|
||||
self->rebalance(self, node->parent);
|
||||
}
|
||||
tree_node_free(node);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user