Я довольно новичок в java, и для одного из наших назначений мне требуется создать двоичное дерево, содержащее узлы с значениями int. Мой профессор хочет, чтобы мы использовали один класс, содержащий основной метод. Я применил два рекурсивных метода, один для вставки узла и один для отображения существующих узлов. Однако, когда я запускаю свой код, консоль отображает только самый последний узел, который я ввел. Что-то не так с методами, которые я использовал? Это то, что я до сих пор:Java: методы рекурсии двоичного дерева
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.");
}
}
}
}
Я вижу, поэтому моя программа каждый раз устанавливает новый корень. Я обязательно применим предложенные вами изменения. Спасибо за помощь! – user2604960