Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public void removeBST(String value)
- {
- //richiamo metodo ricorsivo di rimozione
- removeBST(value, super.getRoot());
- }
- private Node removeBST(String value, Node node)
- {
- //se arrivo alla fine dell'albero senza aver trovato il valore
- if(node==null)
- {
- System.out.println("Valore non trovato");
- return null;
- }
- //altrimenti ricerco il nodo da cancellare
- if(node.getKey().compareTo(value)>0)
- node.setLeft(removeBST(value,node.getLeft()));
- else if(node.getKey().compareTo(value)<0)
- node.setRight(removeBST(value,node.getRight()));
- //se lo trovo eseguo la rimozione
- else
- {
- if(node.isLeaf())
- return null;
- if(node.getRight()==null)
- return node.getLeft();
- if(node.getLeft()==null)
- return node.getRight();
- //trovo il nodo successore e utilizzo il suo valore, rimuovendolo poi dalla sua posizione
- String data=maximumAVL(node.getLeft());
- removeBST(data, node.getLeft());
- node.setKey(data);
- }
- //ribilancio prima di restituire
- node=rebalance(node);
- return node;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement