02. december 2001 - 23:27Der er
4 kommentarer og 3 løsninger
Binær søgetræ
Hvordan implementerer/koder jeg et binært søgetræ. Det er vist noget med følgende:
class Btree
private Object Value; private LinkedListe = new LinkedList();
public Btree(Object V) { Value = v;
}
Mit træ indeholder en node indeholde en værdi af denne samt en linkede liste af børn. Det jeg skal er vel at implementer en insert() og en extract() metoder, men lige hvordan jeg skal gøre er jeg i tvivl om.
Er kommet frem til nedenstående, men skal nu gemme mine noder i en linked liste. For at kunne gemmen mine skal jeg vel kunne skelne imellem højre og venstre node(2 x i +1, 2 x i +2)
public class BTNode { private int info; private BTNode leftChild; private BTNode rightChild; public BTNode(int theInfo) private LinkedListe = new LinkedList();
{ info = theInfo; leftChild = null; rightChild = null; } // Read Accessors public int getInfo() { return info; } public BTNode getLeft() { return leftChild; } public BTNode getRight() { return rightChild; } // Write Accessors public void setInfo(int theInfo) { info = theInfo; } public void setLeft(BTNode theNode) { leftChild = theNode; { public void setLeft(int theInfo) { BTNode newNode; newNode = new BTNode(theInfo); setLeft( newNode ); } public void setRight(BTNode theNode) { rightChild = theNode; } public void setRight(int theInfo) { BTNode newNode; newNode = new BTNode(theInfo); setRight( newNode ); } }
Hvis ikke du skal havde andet end int\'s liggende i dit træ, hvorfor implementerer du det så ikke bare i et array... Det er lidt nemmere at overskue i starten! :)
Din formel skal evt. redigeres lidt:
1) spring index 0 over 2) index 1 = rod 3) venstre barn = index 2 4) højre barn = index 3 osv.
venstre barn = index for given knude * 2 højre barn = index for given knude * 2 + 1 parent = index for given knude / 2 (pga. heltalsdivision)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.