Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private T removeHelper(BSTNode<T> parent, T data) {
- T output = null;
- if (parent == null) {
- throw new NoSuchElementException("element not found");
- }
- if (parent == root && root.getData().compareTo(data) == 0) {
- if (parent.getRight() == null) {
- parent = parent.getLeft();
- } else if (parent.getLeft() == null) {
- parent = parent.getRight();
- } else {
- parent.setData(successor(root));
- }
- } else if (data.compareTo(parent.getData()) < 0) {
- if (parent.getLeft() == null) {
- return null;
- } else if (parent.getLeft().getData().compareTo(data) == 0) {
- output = parent.getLeft().getData();
- if (parent.getLeft().getRight() == null) {
- parent.setLeft(parent.getLeft().getLeft());
- } else if (parent.getLeft().getLeft() == null) {
- parent.setLeft(parent.getLeft().getRight());
- } else {
- parent.getLeft().setData(successor(parent.getLeft()));
- }
- } else {
- output = removeHelper(parent.getLeft(), data);
- }
- } else {
- if (parent.getRight() == null) {
- return null;
- } else if (parent.getRight().getData().compareTo(data) == 0) {
- output = parent.getRight().getData();
- if (parent.getRight().getLeft() == null) {
- parent.setRight(parent.getRight().getRight());
- } else if (parent.getRight().getRight() == null) {
- parent.setRight(parent.getRight().getLeft());
- } else {
- parent.getRight().setData(successor(parent.getRight()));
- }
- } else {
- output = removeHelper(parent.getRight(), data);
- }
- }
- return output;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement