Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. private CampTreeNode deleteHelp(CampTreeNode current, Camper key) {
  2. CampTreeNode root = current; // assign original root to variable root
  3. CampTreeNode parent = null;
  4. while (current != null) {
  5. if (current.getData().equals(key)) { // if node found
  6. if (current.getLeftNode() == null && current.getRightNode() == null) {
  7. // if current node is leaf
  8. if (parent == null) { // if no parent, current is root
  9. current = null;
  10. root = null;
  11. }
  12. else if (parent.getLeftNode().equals(current)) { // if current is a left child
  13. parent.setLeftNode(null); // remove left child
  14. current = null;
  15. }
  16. else { // if current is a right child
  17. parent.setRightNode(null); // remove right child
  18. current = null;
  19. }
  20. }
  21. else if (current.getLeftNode() != null && current.getRightNode() == null) {
  22. // if current node only has a left child
  23. if (parent == null) { // if current is root
  24. root = current.getLeftNode(); // root assigned to current's only child
  25. current = null;
  26. }
  27. else if (parent.getLeftNode().equals(current)) { // if current is a left child
  28. // remove current node and assign parent's left child to current's left child
  29. parent.setLeftNode(current.getLeftNode());
  30. current = null;
  31. }
  32. else { // if current is a right child
  33. // remove current node and assign parent's right child to current's left child
  34. parent.setRightNode(current.getLeftNode());
  35. current = null;
  36. }
  37. }
  38. else if (current.getLeftNode() == null && current.getRightNode() != null) {
  39. // if current node only has a right child
  40. if (parent == null) { // if current is root
  41. root = current.getRightNode(); // root assigned to current's only child
  42. current = null;
  43. }
  44. else if (parent.getLeftNode().equals(current)) { // if current is a left child
  45. // remove current node and assign parent's left child to current's right child
  46. parent.setLeftNode(current.getRightNode());
  47. current = null;
  48. }
  49. else { // if current is a right child
  50. // remove current node and assign parent's right child to current's right child
  51. parent.setRightNode(current.getRightNode());
  52. current = null;
  53. }
  54. }
  55. else { // if current has two children
  56. // Find successor (leftmost child of right tree
  57. CampTreeNode suc = current.getRightNode();
  58. while (suc.getLeftNode() != null) { // sets suc to leftmost child of right tree of current
  59. suc = suc.getLeftNode();
  60. }
  61. Camper sucData = suc.getData(); // backup of successor's data
  62. deleteHelp(root, sucData); // remove successor
  63. current.setData(sucData); // assign current's data with successor's data
  64. current = null;
  65. }
  66. }
  67. else if (current.getData().compareTo(key) < 0) { // if current < key
  68. parent = current;
  69. current = current.getRightNode(); // search right
  70. }
  71. else { // if current > key
  72. parent = current;
  73. current = current.getLeftNode(); // search left
  74. }
  75. }
  76.  
  77. return root;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement