Η διαγραφή (γενικά) δεν είναι αντιμεταθετική. Εδώ είναι ένα αντιπαράδειγμα:
4
/ \
3 7
/
6
Τι και αν διαγράψετε 4 και στη συνέχεια 3;
Όταν διαγράφετε 4, παίρνουμε 6 ως νέα ρίζα:
6
/ \
3 7
Διαγραφή 3 δεν αλλάζει το δέντρο, αλλά μας δίνει αυτό:
6
\
7
Τι θα συμβεί αν έχουμε διαγράψει 3 και στη συνέχεια 4;
Όταν διαγράφετε 3 το δέντρο δεν αλλάζει:
4
\
7
/
6
Ωστόσο, όταν έχουμε τώρα τη διαγραφή 4, η νέα ρίζα γίνεται 7:
7
/
6
Οι δύο προκύπτουσες δέντρα δεν είναι τα ίδια, ως εκ τούτου, διαγραφή δεν είναι αντιμεταθετική.
ΕΚΣΥΓΧΡΟΝΙΖΩ
Δεν είχα διαβάσει τον περιορισμό ότι αυτό είναι όταν διαγράφετε πάντα έναν κόμβο με 2 παιδιά. Η λύση μου είναι για τη γενική περίπτωση. Θα ενημερώσετε αν / όταν μπορώ να βρω ένα αντι-παράδειγμα.
ΑΛΛΗ ΕΝΗΜΕΡΩΣΗ
Δεν έχω συγκεκριμένες αποδείξεις, αλλά Πάω να τολμούσα να πω:
Στη γενική περίπτωση, να χειριστεί διαγραφές με διαφορετικό τρόπο ανάλογα με το αν έχετε δύο παιδιά, ένα παιδί, ή χωρίς παιδιά. Στο αντι-παράδειγμα που έδωσα, θα ήθελα πρώτα να διαγράψετε έναν κόμβο με δύο παιδιά και στη συνέχεια ένας κόμβος με ένα παιδί. Μετά από αυτό, μπορώ να διαγράψω ένα κόμβο χωρίς παιδιά και στη συνέχεια ένα άλλο κόμβο με ένα παιδί.
Στην ειδική περίπτωση μόνο τη διαγραφή κόμβων με δύο παιδιά, θέλετε να εξετάσει την περίπτωση κατά την οποία και οι δύο κόμβοι βρίσκονται στην ίδια υπο-δέντρο (αφού δεν θα έχει σημασία αν είναι σε διαφορετικές υπο-δέντρα? Μπορείτε να είστε σίγουροι ότι η συνολική δομή δεν θα αλλάζει ανάλογα με τη σειρά της διαγραφής). Αυτό που πραγματικά χρειάζεται να αποδειχθεί είναι αν η σειρά της διαγραφής των κόμβων στο ίδιο υπο-δέντρο, όπου κάθε κόμβος έχει δύο παιδιά, τα θέματα.
Σκεφτείτε δύο κόμβους Α και Β, όπου Α είναι ένας πρόγονος του B. Στη συνέχεια, μπορείτε να βελτιώσετε ακόμη περισσότερο την ερώτηση είναι:
Είναι διαγραφή αντιμεταθετική όταν σκέφτεστε τη διαγραφή των δύο κόμβων από ένα δυαδικό Αναζήτηση Δέντρο που έχουν σχέση προγόνου-απογόνου μεταξύ τους (αυτό σημαίνει ότι είναι στο ίδιο υπο-δέντρο);
Όταν διαγράφετε ένα κόμβο (ας πούμε Α), που διασχίζουν το δικαίωμα υπο-δέντρο για να βρείτε το ελάχιστο στοιχείο. Αυτός ο κόμβος θα είναι ένας κόμβος φύλλο και ποτέ δεν μπορεί να είναι ίσο με Β (λόγω B έχει δύο παιδιά και δεν μπορεί να είναι ένας κόμβος φύλλο). Στη συνέχεια, θα αντικαταστήσει την τιμή της Α με την αξία αυτού του φύλλου-κόμβο. Αυτό σημαίνει ότι η μόνη διαρθρωτική αλλαγή στο δέντρο είναι η αντικατάσταση της αξίας του Α με την αξία του φύλλου-κόμβο, και η απώλεια του φύλλου-κόμβο.
Η ίδια διαδικασία συμμετέχει για Β Δηλαδή, θα αντικαταστήσει την αξία του κόμβου και να αντικαταστήσει ένα φύλλο-κόμβο. Έτσι, σε γενικές γραμμές, όταν διαγράφετε ένα κόμβο με δύο παιδιά, η μόνη διαρθρωτική αλλαγή είναι η αλλαγή στην αξία του κόμβου που διαγραφή, και η διαγραφή του κόμβου φύλλου που είναι αξία που χρησιμοποιείτε ως αντικατάσταση .
Το ερώτημα λοιπόν είναι βελτιώθηκε περαιτέρω:
Μπορώ να σας εγγυηθεί ότι θα έχετε πάντα την ίδια κόμβο αντικατάσταση ανεξάρτητα από τη σειρά της διαγραφής (όταν διαγράφετε πάντα έναν κόμβο με δύο παιδιά);
Η απάντηση (νομίζω) είναι ναι. Γιατί; Εδώ είναι μερικές παρατηρήσεις:
- Ας πούμε ότι έχετε διαγράψει την απόγονο κόμβο πρώτο και το δεύτερο κόμβο πρόγονο. Η υπο-δέντρο που τροποποιήθηκε όταν έχετε διαγράψει τον κόμβο απόγονο είναι όχι στο αριστερό υπο-δέντρο του δικαιώματος των παιδιών του κόμβου προγόνου του. Αυτό σημαίνει ότι αυτό το υπο-δέντρο παραμένει ανεπηρέαστη. Αυτό σημαίνει, επίσης, είναι ανεξάρτητα από τη σειρά της διαγραφής, δύο διαφορετικά οι υπο-δέντρα τροποποιηθεί και ως εκ τούτου η λειτουργία είναι αντιμεταθετική.
- Και πάλι, ας υποθέσουμε ότι έχετε διαγράψει την απόγονο κόμβο πρώτο και το δεύτερο κόμβο πρόγονο. Η υπο-δέντρο που τροποποιήθηκε κατά τη διαγραφή του κόμβου απόγονος είναι στο αριστερό υπο-δέντρο του δικαιώματος των παιδιών του κόμβου προγόνου του. Αλλά ακόμη και εδώ, δεν υπάρχει επικάλυψη. Ο λόγος είναι, όταν διαγράφετε τον κόμβο απόγονο πρώτο, θα δείτε στο αριστερό υπο-δέντρο του κόμβου απόγονος του δικαιώματος του παιδιού. Όταν στη συνέχεια, διαγράψτε τον κόμβο πρόγονο, θα ποτέ δεν πάει κάτω η υπο-δέντρο από τη στιγμή που θα είναι πάντα να πηγαίνει προς τα αριστερά μετά την εισαγωγή αριστερό υπο-δέντρο δεξί παιδί του κόμβου προγόνου του. Έτσι και πάλι, ανεξάρτητα από το τι διαγράψετε την πρώτη σας τροποποίηση διαφορετικές υπο-δέντρα και έτσι φαίνεται να μην έχει σημασία.
- Μια άλλη περίπτωση είναι αν διαγράψετε τον κόμβο πρόγονο πρώτη και θα διαπιστώσετε ότι το ελάχιστο κόμβος είναι παιδί του κόμβου απόγονος. Αυτό σημαίνει ότι ο κόμβος απόγονος θα καταλήξετε με ένα παιδί, και τη διαγραφή του ένα παιδί είναι ασήμαντο. Τώρα εξετάσει την περίπτωση κατά την οποία σε αυτό το σενάριο, θα διαγραφεί το απόγονο κόμβο πρώτα. Στη συνέχεια, θα αντικαταστήσει την αξία του απόγονου κόμβου με το δεξί παιδί του και στη συνέχεια να διαγράψετε το δικαίωμα του παιδιού. Στη συνέχεια, όταν διαγράφετε τον κόμβο πρόγονο, θα καταλήξετε να βρεθεί η ίδια ελάχιστη κόμβο (αριστερά παιδί της παλιάς διαγραφή κόμβου, που είναι και το αριστερό παιδί του κόμβου αντικατασταθεί). Είτε έτσι είτε αλλιώς, θα καταλήξετε με την ίδια δομή.
Αυτό δεν είναι μια αυστηρή απόδειξη? Αυτές είναι μερικές μόνο παρατηρήσεις που έχω κάνει. Με όλα τα μέσα, μην διστάσετε να σακί τρύπες!