У меня небольшая проблема: я создал класс Binary Tree с некоторыми функциями, которые не интересны для этой задачи.Каждый узел хранит левого и правого потомка плюс родителя.Каждый узел имеет значение ключа, которое можно рассматривать как метку.Я создал 3 класса:
Tree.java - это класс узла.
BinaryTree.java содержит некоторые методы, относящиеся ко всему дереву, такие как значение min / max.
Main.java, который проверяет возможности дерева и содержит метод main.
МОЯ ПРОБЛЕМА: Я хотел написать функциональный интерфейс с методом, который получает узел в качестве параметра и выводитлогическое значение.Это может быть использовано для передачи корневого узла и повторной проверки, является ли каждый узел в дереве больше или меньше значения.Однако я совершенно новичок в функциональных интерфейсах и не могу понять логику функциональности.Это то, что я получил до сих пор:
@ FunctionalInterface
public interface NodeOperation {
public abstract boolean forAll(Tree node);
}
NodeOperation overTwenty = (node) -> node.getValue() < 20;
Когда я пытаюсь использовать лямбда-нотацию, она не возвращает мне логическое значение, когда я хочу напечатать overTwenty.Может кто-нибудь помочь мне реализовать функциональный интерфейс и объяснить, как я получаю доступ к логической переменной, чтобы я мог начать думать о том, как я делаю это рекурсивно для каждого узла.
Если вы не знаете много о двоичных деревьях, я предлагаючтобы посмотреть это в Википедии.В моем случае я создал BST (дерево двоичного поиска), означающее, что его структура основана на больших значениях справа и меньших значениях слева.Если вам нужна какая-то конкретная часть моего кода, просто предложите это, и я опубликую это здесь:)