Das Pflichtprogramm habe ich quasi erledigt(siehe Code) aber irgendwie wäre es cool wenn man da noch ne grafische Ausgabe dazu implementieren könnte. Ich habe da auch schon Beispielcode gefunden - allerdings ist da nichts kommentiert so das ich da nicht schlau draus werde wie ich meinen Code nutzen kann um die grafische Ausgabe über den fremden Code zu realisieren (klingt jetzt etwas seltsam aber ich denke Ihr versteht was ich damit sagen möchte).
Hier mal mein Code:
Hier ist der Code der die grafische Baumstruktur erzeugt:
https://github.com/murtraja/java-binary-tree-printer/blob/master/tree_printer/TreePrinter.java
Hier mal mein Code:
Code:
import java.util.ArrayList;
import java.util.Scanner;
public class Node
{
//Input over keyboard
static Scanner userinput = new Scanner(System.in);
static int rootvalue;
static boolean addingnodes = true;
static String nodevalue;
static ArrayList<Integer> nodevaluelist = new ArrayList<Integer>();
int root;
Node left;
Node right;
public Node(int root)
{
this.root = root;
this.left = null;
this.right = null;
}
public void addNewNode(int value)
{
//when our value is smaler as the value from our parent we have to choose the left side
if(value <= root )
{
//we go one area lower and check if on the left side is a free place
//if this is the case we are adding there our new node
if(left == null)
{
left = new Node(value);
}
//if there is already a placed node we jump in that node and do the procedure again by recursion
else
{
left.addNewNode(value);
}
}
//our value is higher compared to our parent node so we have to go to the right side
else
{
//we go one area lower and check if on the right side is a free place
//if this is the case we are adding there our new node
if(right == null)
{
right = new Node(value);
}
//if there is already a placed node we jump in that node and do the procedure again by recursion
else
{
right.addNewNode(value);
}
}
}
public void inorder()
{
if (left != null) left.inorder();
System.out.println(root);
if (right != null) right.inorder();
}
public void preorder()
{
System.out.println(root);
if (left != null) left.preorder();
if (right != null) right.preorder();
}
public void postorder()
{
if (left != null) left.postorder();
if (right != null) right.postorder();
System.out.println(root);
}
public static void dialog()
{
System.out.println("Please insert value of root node");
try
{
rootvalue = Integer.parseInt(userinput.next());
}
catch (NumberFormatException e) {}
nodevaluelist.add(rootvalue);
while(addingnodes == true)
{
System.out.println("You can add another node value type 'no' when you are finished ");
nodevalue = userinput.next();
if(nodevalue.equals("no"))
{
addingnodes = false;
//is used for testing if input works fine
System.out.println("values of my nodelist");
for (Integer output : nodevaluelist)
{
System.out.println(output);
}
break;
}
else
{
try
{
nodevaluelist.add(Integer.parseInt(nodevalue));
}
catch (NumberFormatException e) {}
}
}
}
public static void main(String[] args)
{
dialog();
//I manualy generate the first node because it's the root node and the root node is a special node
//because it has no parents
Node node = new Node(nodevaluelist.get(0));
//after I generated the root node I have to remove this node from my arraylist
nodevaluelist.remove(0);
for(int input : nodevaluelist)
{
node.addNewNode(input);
}
System.out.println("output as In-order traversal");
node.inorder();
System.out.println("output as Pre-order traversal");
node.preorder();
System.out.println("output as Post-order traversal");
node.postorder();
}
}
Hier ist der Code der die grafische Baumstruktur erzeugt:
https://github.com/murtraja/java-binary-tree-printer/blob/master/tree_printer/TreePrinter.java