Bu ödev üzerinde çalışırken bazı sorunlar yaşıyorum. Şu anda bunun üzerinde çalışmaya çalışıyorum. Değerleri saklayabilir ve yazdırabilirim, ancak değerleri bastığımda, sadece girdiğim ilk değeri basar. Herhangi bir yardım Muhteşem olacak! Özyineleme konusunda pek bir şey bilmiyorum ve bu da beyni incitiyor.Özyineleme ikili ağaç baskı hatası
package lab6;
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 {
node tmp = root; // save the current root
if (root.getValue() > n.getValue()) {
root = root.leftLink;
addNode(n);
} else if (root.getValue() < n.getValue()) {
root = root.rightLink;
addNode(n);
}
root = tmp; // put the root back to its original value
}
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.");
}
}
}
}
"Düğüm" sınıfınız bir "düğüm kökü" değişkenine sahip olmamalıdır. Ve kesinlikle statik olmamalı. Ayrıca, tam olarak neyin çalışmadığı net değil. –