Végre egy PriorityQueue egy BinarySearchTree: Java

szavazat
4

Azt kell, hogy „hozzon létre egy prioritási sor által végrehajtott bináris kereső fába (BST)” az én algoritmusok II osztályban. Azonban nem vagyok biztos, hogy pontosan hogyan is használja bináris kereső fába, mint egy sornak. Tudna valaki tisztázni, mi az, hogy a hozzárendelés, mit tegyek?

Referenciaként, itt vannak a módszerek a PriorityQueue kell végrehajtani:

add – adds a new item to the queue
peek – returns the head of the queue
remove – removes the head of the queue and returns it
search – returns the position of an element in the queue, or -1 if it is not found.
size – returns the total number of elements in the queue
inorder – returns an in-order, comma-separated string of every element in the queue
preorder – returns an pre-order, comma-separated string of every element in the queue
height – returns the height of the underlying BST

Köszönöm előre is minden tanácsot !!

A kérdést 21/05/2011 22:50
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

A bináris keresési fa használják hatékonyan fenntartani tárgyak rendezett sorrendben. Ha a sort-order alapul prioritás, akkor a bináris fa válik prioritásos sor. Akkor elsül a legmagasabb prioritást elemet, és helyezzen be új elemeket szerint a prioritás.

Szerkesztette hozzá:

Segíthet, hogy fontolja meg az alternatívákat - ha használják a láncolt lista, mint a sorban, hogyan tudja, hol egy új elemet, eltérő gyalog egészen a listán, ami O (N), a legrosszabb esetben N. egy bináris fa megoldja ezt a problémát.

Válaszolt 21/05/2011 22:57
a forrás felhasználó

szavazat
4

A bináris keresés Fa mindig rendezett és mindig marad annak érdekében, hogy az új elemek kerülnek be.

A fő előnye a bináris keresés fák felett más adatszerkezeteket, hogy a kapcsolódó rendezési algoritmusok és keresési algoritmusok, mint például a rendelésre bejárás igen hatékony lehet.

És ez a prioritásos sor. Egy lehetséges megvalósítás elemek minimális prioritás lesz a legnagyobb számot, és az elemeket a legmagasabb prioritást kap a legkisebb számot. Ha ezeket az elemeket helyezünk a BST és olvasod inorder, akkor van a sorrend, amelyben a sorban fel kell dolgozni.

Hogy feldolgozza a sorban, akkor „pop” off az első eleme a fa, és a többit majd rendelhető el automatikusan a BST.

Az egyetlen dolog, amit meg kell ügyelni a helyes behelyezését az új elemek a fába, és mi történik, ha az első eltávolítjuk.

A módszer lenne térképezni, hogy a fa műveletek, addbeilleszt egy új elemet a megfelelő helyre, és módosítsa a fában, ha szükséges, sizepéldául adja vissza a méret a fa, inordermajd áthalad a fát.

Remélem, hogy készül egy kicsit világosabb.

Válaszolt 21/05/2011 22:58
a forrás felhasználó

szavazat
0

add kandikál eltávolítás standard módszerek a BST

Kereséshez cache mérete az egyes csomópontok melyik lesz az aktuális elemek számát a részfáját ahol a csomópont a gyökér (vagy más szóval node.size = 1+ (node.right==null?0:node.right.size) + (node.left==null?0:node.left.size))

majd a keresés válik

int search(E el,Node n){
    if(n==null)return -1;//stop recursion && nullpointer
    int comp = el.compareTo(n.value);
    if(comp==0)return n.left==null?0:node.left.size;
    else if(comp<0){
        return search(el,node.left);
    }else{
        int res = search(el,node.right)
        return res<0?res:res+(n.left==null?0:node.left.size)+1;//pass through -1 unmodified
    }
}
Válaszolt 21/05/2011 23:08
a forrás felhasználó

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