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
public class BST {
Node root;
public BST(){
root=new Node();
}
public void print(){
root.print();
}
public void insert(int value) {
root.insert(value);
}
}
Node.java
public class Node {
Node left;
Node right;
int value=100;
Bucket data;
public Node() {
data=new Bucket();
data.setMax(100);
}
public void print(){
if(data!=null){
System.out.println("Print Bucket");
data.printValues();
System.out.println();
}else{
System.out.println("Inner Node(");
if(left!=null){
System.out.println("Left Node(");
left.print();
System.out.println(")");
}
if(right!=null){
System.out.println("Right Node(");
right.print();
System.out.println(")");
}
System.out.println(")");
}
}
public void insert(int a_value){
if(value>=a_value){
if(data!=null){
data.addValue(a_value);
value=data.getFree();
}else if(left!=null&&left.value>=a_value){
left.insert(a_value);
if(right!=null){
value=Math.max(left.value,right.value);
}else{
value=left.value;
}
}else if(right!=null&&right.value>=a_value){
right.insert(a_value);
value=Math.max(right.value,left.value);
}
}else{
Node n=new Node();
n.left=left;
n.right=right;
n.value=value;
n.data=data;
data=null;
left=n;
right=new Node();
right.insert(a_value);
value=Math.max(left.value,right.value);
}
}
}
App.java
public class App {
public static void main(String[] args) {
Integer[] numbers = {50 , 25 , 50 , 25 , 30 , 10 , 70 , 10 , 30};
BST bst=new BST();
for(int i = 0; i < numbers.length; i++) {
bst.insert(numbers[i]);
}
System.out.println("BST Buckets");
bst.print();
}
}
Outputtet skulle gerne have en struktur(uden indrykningerne) sådan her:
Inner Node(
Left Node(
Inner Node(
Left Node(
Print Bucket
50 25 25
)
Right Node(
Print Bucket
50 30 10 10
)
)
)
Right Node(
Print Bucket
70 30
)
)
Indlæg senest redigeret d. 04.04.2008 11:20 af Bruger #5620