Törlés (általában) nem kommutatív. Itt van egy ellenpélda:
4
/ \
3 7
/
6
Mi lenne, ha törölni 4, majd 3?
Amikor töröl 4, megkapjuk 6, mint az új root:
6
/ \
3 7
Törlése 3 nem változtatja meg a fát, de számunkra ez:
6
\
7
Mi lenne, ha törli a 3, majd 4?
Amikor töröl 3 a fa nem változik:
4
\
7
/
6
Azonban, ha most törli a 4. az új gyökér válik 7:
7
/
6
Az így kapott két fák nem azonos, ezért a törlés nem kommutatív.
UPDATE
Nem olvastam a megszorítással, hogy ez az, amikor bármikor törölheti a csomópont 2 gyermek részére. A megoldás az általános esetre. Majd frissíteni, ha / amikor találok egy ellenpélda.
Szintén újítás
Nem tudom a konkrét bizonyíték, de fogok becslésekbe:
Az általános esetben, kezeli a törléseket eltérő attól függően, hogy van két gyerek, egy gyerek, vagy nincs gyermeke. Az ellenpélda I feltéve, először törölje a csomópontot, két gyermek, majd egy csomópontot, amely egy gyermek. Ezt követően, törlöm a csomópont gyermek nélkül, majd egy másik csomópontot, amely egy gyermek.
Abban a speciális esetben, csak törlés csomópontok két gyermek, azt szeretné, hogy az esetben, ha mindkét csomópont azonos sub-tree (mivel ez nem számít, ha azok különböző al-fák, akkor biztos lehet benne, hogy a teljes szerkezet nem változik, sorrendjén alapuló törlés). Amire igazán szükség annak bizonyítására, hogy vajon a sorrendben törlését csomópontok azonos sub-tree, ahol minden egyes csomópont két gyermeke van, az ügyeket.
Vegyünk két csomópont A és B, ahol A egy őse B. Aztán tovább finomíthatja a kérdés, hogy:
Van törlés kommutatív, ha figyelembe törlését két csomópont egy bináris keresés Tree egy ős-leszármazott kapcsolata egymással (ez azt jelentené, hogy azok az azonos sub-tree)?
Ha töröl egy csomópont (mondjuk A), áthalad a jobb részfa, hogy megtalálják a legkisebb elem. Ez a csomópont lesz a levél csomópont, és sohasem lehet egyenlő B (mert B két gyerek, és nem lehet a levél csomópont). Akkor majd cserélje ki a értéke, melynek értéke ezen levél csomópont. Ez azt jelenti, hogy az egyetlen szerkezeti változás, hogy a fa a csere egy értéke az érték a levél-csomópont, és a veszteség a levél-csomópont.
Ugyanez a folyamat vesz részt a B. Azaz, akkor cserélje ki az értéke a csomópont és cserélje a levél-csomópont. Így általában, ha töröl egy csomópontot, két gyermek, az egyetlen szerkezeti változás az értékváltozás a csomópont törlendő, és törölték a levél csomópont, aki értéket használ a csere .
A kérdés tehát tovább finomították:
Tud garantálja, hogy mindig ugyanazt a csere csomópont sorrendjétől függetlenül törlés (ha mindig törli a csomópont két gyerek)?
A válasz (szerintem) igen. Miért? Íme néhány észrevételt:
- Tegyük fel, hogy törli a leszármazott csomópont első és az ős csomópont második. Az al-fa úgy módosították, amikor törölte a leszármazott csomópont nem a bal oldali részfa az ős csomópont jobb fia. Ez azt jelenti, hogy ez a sub-tree marad. Mi ez azt is jelenti, függetlenül a megrendelés törlését, két különböző al-fák módosított, ezért a művelet kommutatív.
- Ismét mondjuk törli a leszármazott csomópont első és az ős csomópont második. Az al-fa úgy módosították, amikor törölte a leszármazott csomópont van a bal oldali részfa az ős csomópont jobb fia. De még itt, nincs átfedés. Ennek az az oka, ha törli a leszármazott csomópont először, akkor nézd meg a bal részfa a leszármazott csomópont jobb gyermeke. Ha majd törölje az előd csomópont, akkor soha nem megy le, hogy a sub-tree, mert akkor mindig megy a bal felé, miután megadta az ős csomópont jobb gyermek bal al-fa. Tehát újra, függetlenül attól, hogy mit töröl első módosít különböző al-fák és így úgy tűnik, nem számít a sorrend.
- Egy másik eset, ha törli az ős csomópont első és úgy találja, hogy a minimális csomópont egy gyermek a leszármazott csomópont. Ez azt jelenti, hogy a leszármazott csomópont lesz a végén egy gyerek, és törli az egyik gyermek triviális. Most vegyük azt az esetet, ha ebben a helyzetben, akkor hagyni a leszármazott csomópont először. Akkor váltaná értékét a leszármazott csomópont jobb fia, majd törölje a megfelelő gyermek. Aztán amikor törli az előd csomópont, akkor a végén megtaláljuk a ugyanazt a minimális csomópont (a régi törölt csomópont bal gyermeke, ami szintén a helyébe csomópont bal gyerek). Akárhogy is, ha a végén ugyanazt a szerkezetet.
Ez nem egy szigorú bizonyítás; ez csak néhány észrevételt tettem. Minden eszközzel, nyugodtan lök lyukak!