Я должен пройти по дереву двоичного поиска в качестве предварительного, последующего и последующего порядка и вставить значения в объект [] в Java. Честно говоря, я понятия не имею, как это сделать, и мне нужен совет.
Моя функция:
public Object[] traversePreOrder()
Все, что мне нужно, это в основном идеи или подсказки, как выполнить эту задачу. Если я прохожу по дереву в качестве предзаказа, объект [0], очевидно, является значением корня. Затем я продолжаю в левом дереве и вставляю самые левые значения в свой массив. Затем я вставляю правый дочерний элемент самого левого узла и продолжаю с родительским элементом обоих узлов, если у правого узла нет дочерних узлов.
Но мой метод не может запомнить, какие значения уже были проверены и вставлены. Я также думал об обходе в postorder, помещении каждого элемента в стек и помещении каждого элемента в свой массив, но у меня есть ограничения в моих знаниях о том, как это реализовать.
Помощь!
Вот что, на мой взгляд, уже правильно:
@Override
public Object[] traversePreOrder() {
Object[] preOrderArray = new Object[elements];
if (elements == 0) {
return preOrderArray;
}
return preOrderArray;
}
Очевидно, что этот пробел необходимо восполнить.
Дополнительно у меня есть в качестве основных методов и конструкторов:
BinarySearchTreeNode(T value, BinarySearchTreeNode<T> left,
BinarySearchTreeNode<T> right) {
this.value = value;
this.left = left;
this.right = right;
}
BinarySearchTreeNode(T value) {
this(value, null, null);
}
BinarySearchTreeNode<T> getLeft() {
return left;
}
void setLeft(BinarySearchTreeNode<T> left) {
this.left = left;
}
BinarySearchTreeNode<T> getRight() {
return right;
}
void setRight(BinarySearchTreeNode<T> right) {
this.right = right;
}
T getValue() {
return value;
}
void setValue(T value) {
this.value = value;
}