Мне нужно пройти через двоичное дерево, пропустив дочерние элементы любого узла, для которого выполняется условие.
Это реализует подход с кластеризацией по дереву; листья поддерева считаются кластером, когда они все вместе удовлетворяют условию.
Похоже, что для начала нужно пройти предварительный заказ, но я не уверен, как изменить алгоритм, чтобы пропустить все дочерние элементы текущего узла.
Обновление
В дополнение к двум (правильным) ответам ниже можно использовать следующие библиотеки Java:
- MyArch TreeIter - Общий (с классом адаптера) обход дерева, с пропуском дочернего элемента и динамической максимальной глубиной обхода
- Phylosoft Forester - реализация дерева с
getAllExternalDescendants
и конвертером Newick-to-XML