foglalkozó ismétli a BST

szavazat
2

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?

A kérdést 10/10/2009 08:51
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
2

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.

Válaszolt 10/10/2009 13:17
a forrás felhasználó

szavazat
3

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.

Válaszolt 10/10/2009 13:37
a forrás felhasználó

szavazat
0

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.

Válaszolt 21/06/2012 19:26
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more