pakningsproblem:

Tags:    java

Hej!

public class BinaryTreeTest {

public static void main(String[] args) {


static class Node {
Node left;

Node right;

int value;

public Node(int value) {
this.value = value;
}
}

public void insert(Node node, int value) {
if (value < node.value) {
if (node.left != null) {
insert(node.left, value);
} else {
System.out.println(" Inserted " + value + " to left of "
+ node.value);
node.left = new Node(value);
}
} else if (value > node.value) {
if (node.right != null) {
insert(node.right, value);
} else {
System.out.println(" Inserted " + value + " to right of "
+ node.value);
node.right = new Node(value);
}
}
}


Jeg har fundet det her på internettet men jeg ved ikke hvordan jeg kan f.eks. bruge disse tal 100, 50, 25 , 50 , 25 , 30 , 10 ,70 ,10 , 30 til at lave et binært træ.

Jeg skal bruge det til at pakke tallene ind I en kasse så resultatet bliver sådan her:
100 er kassens størrelse og outputet sådan her:
50 25 25
50 30 10 10
70 30

”Den ser på elementerne et for et, og pakker hvert element I den første kasse, som harp lads nok. Er der ingen af de allerede anvendte kasser som har plads til elementet, tags en ny kasse i brug.”
”Vi skal bruge et fuldstændigt binært træ. Bladet længst til venstre repræsentere den første kasse, det næste blad repræsenterer den anden kasse osv.. I hvert blad opbevares et helttal t, som angviver, hvor meget ledig plads der er i den tilsvarende kasse. I hver indre knude opbevares det største heltal, som findes i knudens undertræ.”

ER DER NOGEN DER HAR EN IDEE TIL HVORDAN JEG KAN LAVE DET! Skal jeg overhovedet bruge det stykke kode som jeg har fundet!!! eller er der en nemmere måde?

Håber at der er nogen som kan hjælpe mig på rette vej!



3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato


Hej Robert,
Jeps, det er en ganske fin implementering. Referencen til "data" er tallet "value", idet at det er et binært træ over heltal.


Hej Heidi,
Ganske glimrende implementation.

Du lægger dit træ ind i main:
Node myTree = new Node(50);
insert(myTree, 40);
insert(myTree, 60);
insert(myTree, 100);
insert(myTree, 90);

Klassen du har fundet laver dog ikke et "fuldstændigt" binært træ, idet at dybden ikke altid udvides. det som der mangler er, at træ strukturen udvides så en knude i træet indeholder det største tidligre tal, og at der samtidig udvides.

Der mangler håndtering til forandring af topknuden når der placeres til højre - samtidig skal der ved højreplacering også laves en "insert" med den gamle knude value på node.left.

Med venlig hilsen
Ieet





Det så sikkert 4 siden sidst jeg havde noget med de hadet BST at gøre så ved ikke om dette opfylder BST.
BST.java
Fold kodeboks ind/udKode 


Node.java
Fold kodeboks ind/udKode 


App.java
Fold kodeboks ind/udKode 



Outputtet skulle gerne have en struktur(uden indrykningerne) sådan her:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 04.04.2008 11:20 af Bruger #5620
bob bob...ved ikke lige så meget om kassers størrelse men jeg kan da se at små tal lægges i venstre undertræ og større lægges i højre undertræ.
Det er en ganske fin implementering af et binært søgetræ men normalt ville man nok også gemme en reference til noget data i Node objektet, for tallet alene giver nok ikke så meget mening.



t