Проверка двоичного дерева поиска с использованием параметров (node, maxNode, minNode).JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверка двоичного дерева поиска с использованием параметров (node, maxNode, minNode).

Сообщение Anonymous »

Для задания нам необходимо рекурсивно проверить bst. Я нашел много алгоритмов, но задание требует использования максимальных и минимальных параметров узла. Я попытался проверить, превышает ли корень поддерева максимальное значение левого дерева и меньше минимальное значение правого дерева. Кажется, я не могу найти алгоритмы, в которых нужно использовать максимальные и минимальные узлы.
protected boolean isValidAux(final TreeNode node, TreeNode minNode, TreeNode maxNode) {

boolean valid = true;

if (node == null) {
valid = true;
}

else if (node.getData().compareTo(maxNode.getData()) > 0 && node.getData().compareTo(minNode.getData()) < 0) {
valid = false;
}

else {
valid = isValidAux(node.getLeft(), minNode(node.getLeft()), maxNode(node.getLeft()));

valid = isValidAux(node.getRight(), minNode(node.getRight()), maxNode(node.getRight()));
}

return valid;

}

private TreeNode maxNode(TreeNode node) {

if (node != null) {
while (node.getRight() != null) {
node = node.getRight();
}

}
return node;
}

private TreeNode minNode(TreeNode node) {

if (node != null) {
while (node.getLeft() != null) {
node = node.getLeft();
}
}
return node;
}

public boolean isValid() {
TreeNode minNode;
TreeNode maxNode;

minNode = minNode(root.getLeft());
maxNode = maxNode(root.getRight());

return this.isValidAux(this.root, minNode, maxNode);
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»