Поэтому я пытаюсь распечатать значение в виде длинной строки, которую все мои узлы имеют в BST, проблема в том, что я не могу найти способ сохранить эти значения в методе, поскольку они являются рекурсивными методами (inOrder preOrder postOrder), как мне это сделать? мои коды работают, когда я пытаюсь распечатать каждое значение построчно. Заранее спасибо!
скажем, у меня есть эти имена, и я хочу распечатать их в алфавитном порядке, используя BST:
Джерри, Элейн, Ральф, Алиса, Джордж, Сьюзен, Нортон, Трикси.
Результат, который я хочу:
[Alice] [Элейн] [Джордж] [Джерри] [Нортон] [Ральф] [Susan] [Трикси]
import java.util.Random;
public class TreeNode {
private String value;
private TreeNode left;
private TreeNode right;
public TreeNode(String n) {
value = n;
left = right = null;
}
public void insert(String n) {
if (n.compareTo(value) <= 0) {
if (left == null) {
left = new TreeNode(n);
} else {
left.insert(n);
}
} else {
if (right == null) {
right = new TreeNode(n);
} else {
right.insert(n);
}
}
}
public boolean contains(String n) {
if (n == value) {
return true;
} else if (n.compareTo(value) <= 0) {
if (left == null) {
return false;
} else {
return left.contains(n);
}
} else {
if (right == null) {
return false;
} else {
return right.contains(n);
}
}
}
public TreeNode remove(String n) {
if (n.compareTo(value) < 0) {
if (left != null) {
left = left.remove(n);
}
} else if (n.compareTo(value) > 0) {
if (right != null) {
right = right.remove(n);
}
} else {
if (left == null && right == null) {
return null;
} else if (left != null && right == null) {
return left;
} else if (left == null && right != null) {
return right;
} else {
Random r = new Random();
if (r.nextBoolean()) {
value = left.rightMost();
left = left.remove(value);
} else {
value = right.leftMost();
right = right.remove(value);
}
}
}
return this;
}
public String leftMost() {
if (left == null) {
return value;
} else {
return left.leftMost();
}
}
public String rightMost() {
if (right == null) {
return value;
} else {
return right.rightMost();
}
}
public String inOrder() {
String temp = null;
if (left != null) {
left.inOrder();
}
temp = "["+value+"]";
if (right != null) {
right.inOrder();
}
return temp;
}
public class BinarySearchTree {
private TreeNode root;
public BinarySearchTree() {
root = null;
}
public void insert(String n) {
if (root == null) {
root = new TreeNode(n);
} else {
root.insert(n);
}
}
public boolean contains(String n) {
if (root == null) {
return false;
} else {
return root.contains(n);
}
}
public void remove(String n) {
if (root != null) {
root = root.remove(n);
}
}
public String inOrder() {
if (root != null) {
root.inOrder();
}
return root.inOrder();
}