La cancellazione (in generale) non è commutativa. Ecco un controesempio:
4
/ \
3 7
/
6
Che cosa succede se cancelliamo 4 e poi 3?
Quando cancelliamo 4, otteniamo 6 come la nuova radice:
6
/ \
3 7
L'eliminazione di 3 non cambia l'albero, ma ci dà questa:
6
\
7
Che cosa succede se cancelliamo 3 e poi 4?
Quando cancelliamo 3 l'albero non cambia:
4
\
7
/
6
Tuttavia, quando abbiamo ora cancelliamo 4, la nuova radice diventa 7:
7
/
6
I due alberi risultanti non sono gli stessi, quindi cancellazione non è commutativa.
AGGIORNARE
Non ho letto la restrizione che questo è quando si elimina sempre un nodo con 2 bambini. La mia soluzione è per il caso generale. Io aggiornare se / quando posso trovare un contro-esempio.
Un altro aggiornamento
Non ho prove concrete, ma ho intenzione di azzardare un'ipotesi:
Nel caso generale, si gestiscono le eliminazioni in modo diverso a seconda che si hanno due figli, un bambino, o senza figli. Nel contro-esempio che ho fornito, in primo luogo ho eliminare un nodo con due figli e poi un nodo con un bambino. Dopo di che, ho eliminare un nodo senza figli e poi un altro nodo con un bambino.
Nel caso particolare di eliminare solo i nodi con due figli, si vuole considerare il caso in cui entrambi i nodi sono nella stessa sotto-albero (in quanto non importa se sono in diversi sotto-alberi, si può essere sicuri che il struttura complessiva non cambierà in base all'ordine di soppressione). Quello che si ha realmente bisogno di dimostrare è se l'ordine di cancellazione dei nodi nella stessa sotto-albero, dove ogni nodo ha due figli, questioni.
Consideriamo due nodi A e B dove A è un antenato di B. Quindi è possibile raffinare ulteriormente la questione di essere:
È l'eliminazione commutativa quando si stanno prendendo in considerazione la cancellazione di due nodi da un binario di ricerca albero, che hanno un rapporto antenato-discendente tra di loro (questo implicherebbe che sono nella stessa sotto-albero)?
Quando si elimina un nodo (diciamo A), si attraversa il diritto sub-albero per trovare l'elemento minimo. Questo nodo sarà un nodo foglia e non può mai essere uguale a B (perché B ha due figli e non può essere un nodo foglia). Si potrebbe quindi sostituire il valore di A con il valore di questa foglia-nodo. Ciò significa che l'unica modifica strutturale alla struttura è la sostituzione del valore di A con il valore del nodo foglia, e la perdita del nodo foglia.
Lo stesso processo è coinvolto in B. Cioè, si sostituisce il valore del nodo e sostituire una foglia-nodo. Quindi, in generale, quando si elimina un nodo con due figli, l'unico cambiamento strutturale è la variazione del valore del nodo si sta eliminando, e l'eliminazione del nodo foglia che è il valore che si sta utilizzando in sostituzione .
Quindi la domanda è ulteriormente raffinato:
Può garantire che otterrete sempre lo stesso nodo sostitutivo indipendentemente dall'ordine di eliminazione (quando si sta sempre Eliminazione di un nodo con due figli)?
La risposta (credo) è sì. Perché? Qui ci sono alcune osservazioni:
- Diciamo che si elimina il nodo discendente primo ed il secondo nodo antenato. Il sub-albero che è stato modificato quando è stato eliminato il nodo discendente è non nel sotto-albero sinistro del figlio destro del nodo antenato. Ciò significa che questo sub-tree rimane inalterato. Ciò significa anche indipendentemente dall'ordine di soppressione, due diverse sotto-alberi vengono modificate e pertanto l'operazione è commutativa.
- Anche in questo caso, diciamo che si elimina il nodo discendente primo ed il secondo nodo antenato. Il sub-albero che è stato modificato quando è stato eliminato il nodo discendente è nel sotto-albero sinistro del figlio destro del nodo antenato. Ma anche qui, non c'è sovrapposizione. Il motivo è quando si elimina il nodo discendente prima, si guarda al sotto-albero sinistro del nodo discendente destra bambino. Quando si elimina il nodo antenato, si non imboccare questa sotto-albero dal momento che sarà sempre si reca verso sinistra dopo aver inserito a sinistra sotto-albero di destro elementi secondari del nodo antenato. Così ancora una volta, indipendentemente da ciò che si elimina prima che si sta modificando diversi sotto-alberi e così appare ordine non importa.
- Un altro caso è se si elimina il nodo antenato prima e si scopre che il punto di minimo è un figlio del nodo discendente. Ciò significa che il nodo discendente finirà con un bambino, e l'eliminazione della un bambino è banale. Consideriamo ora il caso in cui in questo scenario, è stato eliminato il nodo discendente prima. Poi si dovrebbe sostituire il valore del nodo discendente con il suo figlio destro e quindi eliminare il figlio destro. Poi, quando si elimina il nodo predecessore, si finisce per trovare la stessa punto di minimo (figlio sinistro del vecchio nodo cancellato, che è anche figlio sinistro del nodo sostituito). In entrambi i casi, si finisce con la stessa struttura.
Questa non è una dimostrazione rigorosa; queste sono solo alcune osservazioni che ho fatto. Con tutti i mezzi, non esitate a colpire i fori!