Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. @Override
  2. public void removeBST(String value)
  3. {
  4. //richiamo metodo ricorsivo di rimozione
  5. removeBST(value, super.getRoot());
  6. }
  7.  
  8. private Node removeBST(String value, Node node)
  9. {
  10. //se arrivo alla fine dell'albero senza aver trovato il valore
  11. if(node==null)
  12. {
  13. System.out.println("Valore non trovato");
  14. return null;
  15. }
  16. //altrimenti ricerco il nodo da cancellare
  17. if(node.getKey().compareTo(value)>0)
  18. node.setLeft(removeBST(value,node.getLeft()));
  19. else if(node.getKey().compareTo(value)<0)
  20. node.setRight(removeBST(value,node.getRight()));
  21. //se lo trovo eseguo la rimozione
  22. else
  23. {
  24. if(node.isLeaf())
  25. return null;
  26. if(node.getRight()==null)
  27. return node.getLeft();
  28. if(node.getLeft()==null)
  29. return node.getRight();
  30. //trovo il nodo successore e utilizzo il suo valore, rimuovendolo poi dalla sua posizione
  31. String data=maximumAVL(node.getLeft());
  32. removeBST(data, node.getLeft());
  33. node.setKey(data);
  34. }
  35. //ribilancio prima di restituire
  36. node=rebalance(node);
  37. return node;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement