Java: binäre Baum Rekursion Methoden
Ich bin ganz neu bei java und eine unserer Aufgaben verlangt von mir erstellen Sie eine binäre Baum enthält Knoten, die mit int-Werten. Mein professor möchte, dass wir verwenden eine Klasse, die die main-Methode. Ich bewarb mich zwei rekursive Methoden, eine um einen Knoten einzufügen und anzuzeigen vorhandenen Knoten. Immer wenn ich meinen code aber die Konsole zeigt nur den letzten Knoten, den ich betrat. Gibt es etwas falsch mit den Methoden, die ich verwendet? Dies ist, was ich habe, so weit:
import java.util.Scanner;
public class node {
private int value;
static node root;
public node leftLink;
public node rightLink;
public node(int v)
{
this.value = v;
}
public int getValue()
{
return value;
}
static void traverseShow()
{
if(root.leftLink != null){
root = root.leftLink;
traverseShow();
}
System.out.println(root.getValue());
if(root.rightLink != null)
{
root = root.rightLink;
traverseShow();
}
return;
}
static void addNode(node n)
{
if(root==null)
{
root = n;
}
else
{
if(root.getValue()>n.getValue())
{
root = root.leftLink;
addNode(n);
}
if(root.getValue()<n.getValue())
{
root = root.rightLink;
addNode(n);
}
}
return;
}
public static void main(String[] args)
{
int val = 0;
Scanner sc = new Scanner(System.in);
boolean loop = true;
String command = "";
while(loop==true)
{
System.out.println("Please enter a command:");
System.out.println("A = insert a new value");
System.out.println("B = display all values");
System.out.println("C = exit program");
command = sc.next();
if(command.equalsIgnoreCase("a"))
{
System.out.println("Enter value: ");
val = sc.nextInt();
node newNode = new node(val);
addNode(newNode);
}
else if(command.equalsIgnoreCase("b"))
{
traverseShow();
}
else if(command.equalsIgnoreCase("c"))
{
sc.close();
System.exit(0);
}
else
{
System.out.println("Invalid command! Please try again.");
}
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist Einstellung der Wurzel zu dem neuen Knoten, wenn Sie traversieren den Baum zu finden, wo der neue Knoten. Eine einfache option ist die Speicherung des aktuellen root in eine temporäre variable und setzen Sie es zurück, nachdem Sie legen Sie die Knoten.
Sollten Sie tun, etwas ähnliches für Ihre traverseShow Methode als gut.