Saját BST képesnek kell lennie arra, hogy megbirkózzon az ismétlődő bejegyzések. Van valakinek bármilyen stratégiák, hogyan szeretné ezt, amely nem igényel nagy mennyiségű kódot? Arra gondoltam, hogy következetesen hozzátéve ismétlődések a jogot, de aztán ez akarat elrontani a BST sorrendben. például mi történik, amikor az ismétlődő két gyermeke van, akik viszont van két gyermeke ?. behelyezése az ismétlődő elég könnyű, de mit kell tenni a csomópont cserélni?
foglalkozó ismétli a BST
Lehet, hogy a csomópontok a bináris keresés fát kapcsolt listák.
class Data implements Comparable<Data>
{
// These are the data elements in your binary search tree
}
class TreeNode
{
TreeNode left; // elements less than current node, or null
TreeNode right; // elements greater than current node, or null
List<Data> items = new LinkedList<Data>();
}
Itt treeNode.itemsmindig van egy nem üres lista, oly módon, hogy item1.compareTo(item2) == 0minden item1és item2az treeNode.items.
Beszúrni egy ismétlődő elem, akkor megtalálja a megfelelő TreeNodetárgyat, és adjunk hozzá egy új elemet items.
A logika a megállapítás elemek szinte ugyanaz, mint te korábban, kivéve, hogy ha megtaláljuk a megfelelő TreeNodeobjektumot meg kell járni a láncolt lista.
Mindaddig, amíg ez nem egy önálló kiegyensúlyozó BST, nem látok problémát üzembe egyenlő csomópontok akár a bal vagy jobb oldali csomópont, amely megegyezik a számukra.
Szerkesztése (miután simonn megjegyzése):
Ha a „kettős csomó” a kérdéses, már van 2 gyerek, akkor egyszerűen helyezze az „új ismétlődő csomópont”, hogy a bal és hagyja, hogy a bal oldali gyermek a „régi ismétlődő node” lesz a bal gyerek az „új ismétlődő node”.
Hadd tisztázzam egy példát. A fa behelyezése előtt két példányban:
4'
/ \
2 5
/ \
1 3
És most az elem 4''egészül ki:
4'
/ \
4'' 5
/
2
/ \
1 3
Mindaddig, amíg a fa nem önkiegyensúlyozást, nem lesz baj.
Kíváncsi vagyok, ha valóban szükség van, hogy tárolja az ismétlődő bejegyzéseket külön csomópont? Tudni hozzátéve egy számláló változó a Node elég lesz? Így, ha keresztezik a fa akkor tudja a számát ismétlődő bejegyzéseket és még őrzik a rendet.













