Advertisement
Guest User

SuperSuppe

a guest
Jun 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. public int remove(C key) {
  2.  
  3. SearchTreeNode t = root;
  4. SearchTreeNode parent = null;
  5. while (t != null) {
  6. int res = key.compareTo((C) t.key);
  7. if (res < 0) {
  8. parent = t;
  9. t = t.left;
  10. } else if (res > 0) {
  11. parent = t;
  12. t = t.right;
  13. } else { // res == 0, gefunden
  14. deleteNode(parent, t);
  15. countRemoved++;
  16. remove(key);
  17. break;
  18. }
  19. }
  20. return countRemoved;
  21. }
  22.  
  23. /**
  24. *
  25. * @param parent
  26. * @param t
  27. * @return boolean;
  28. *
  29. * Siehe Folien
  30. *
  31. */
  32. public boolean deleteNode(SearchTreeNode parent, SearchTreeNode t) {
  33. if (t.left == null) {
  34. if (t.right == null) { // Blatt
  35. if (parent == null) { // einelementig
  36. root = null;
  37.  
  38. } else { // normaler Blattknoten
  39. if (parent.left == t) {
  40. parent.left = null;
  41. } else { // parent.right == t
  42. parent.right = null;
  43.  
  44. }
  45. }
  46. } else { // nur linke Seite leer
  47. SearchTreeNode r = t.right; // rechten Nachfolger...
  48. t.left = r.left; // ... in t kopieren
  49. t.key = r.key;
  50. t.data = r.data;
  51. t.right = r.right;
  52. }
  53. } else if (t.right == null) { // nur rechte Seite leer
  54. SearchTreeNode l = t.left; // linken Nachfolger
  55. t.left = l.left; // ... in t kopieren
  56. t.key = l.key;
  57. t.data = l.data;
  58. t.right = l.right;
  59. } else { // zwei Kinder
  60. if (t.left.right == null) {
  61. t.key = t.left.key;
  62. t.data = t.left.data;
  63. t.left = t.left.left;
  64. } else {
  65. SearchTreeNode maxl = t.left;
  66. while (maxl.right.right != null) {
  67. maxl = maxl.right;
  68. }
  69. t.key = maxl.right.key;
  70. t.data = maxl.right.data;
  71. maxl.right = maxl.right.left;
  72. }
  73. }
  74. size--;
  75. return true;
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement