Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public boolean removeHelp(Key key, Top top, Top parent, boolean links) {
- if (lookup(key)) {
- if (key.compareTo(top.getKey()) == Key.LT) {
- removeHelp(key, top.getLeft(), top,true);
- } else if (key.compareTo(top.getKey()) == Key.GT) {
- removeHelp(key, top.getRight(), top, false);
- } else {
- if (top.hasLeft() && top.hasRight()) {
- Top maxFromLeft = max(top.getLeft());
- if(parent == null) {
- root = maxFromLeft;
- } else if(links) {
- parent.setLeft(maxFromLeft);
- } else {
- parent.setRight(maxFromLeft);
- }
- removeHelp(maxFromLeft.getKey(), top.getLeft(), top, true);
- maxFromLeft.setRight(top.getRight());
- maxFromLeft.setLeft(top.getLeft());
- } else if (top.hasLeft()) {
- if (parent == null) {
- root = top.getLeft();
- }
- else if(links) {
- parent.setLeft(top.getLeft());
- } else {
- parent.setRight(top.getLeft());
- }
- } else if (top.hasRight()) {
- if (parent == null) {
- root = top.getRight();
- }
- if(links) {
- parent.setLeft(top.getRight());
- } else {
- parent.setRight(top.getRight());
- }
- } else {
- if (links) {
- parent.setLeft(null);
- } else {
- parent.setRight(null);
- }
- return true;
- }
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement