Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- } else if (left != NULL && right == NULL) {
- Tree_Replace (node, left);
- Tree_DeleteBalance (t, node, 0);
- toDelete = left;
- } else { // if (left != NULL && right != NULL)
- Node successor = right;
- if (successor->left == NULL) {
- Node parent = node->parent;
- successor->parent = parent;
- successor->left = left;
- successor->balance = node->balance;
- if (left != NULL) {
- left->parent = successor;
- }
- if (node == t->root) {
- t->root = successor;
- } else {
- if (parent->left == node) {
- parent->left = successor;
- } else {
- parent->right = successor;
- }
- }
- Tree_DeleteBalance (t, successor, -1);
- } else {
- ...
- void Tree_Replace (Node target, Node source) {
- Node left = source->left;
- Node right = source->right;
- target->balance = source->balance;
- target->data = source->data;
- target->left = left;
- target->right = right;
- if (left != NULL) {
- left->parent = target;
- }
- if (right != NULL) {
- right->parent = target;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement