Какие знаешь реализации дерева в Java

«Какие знаешь реализации дерева в Java» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java деревья можно реализовать несколькими способами:

  1. Стандартная иерархия классов (наиболее гибкий вариант):
class TreeNode<T> {
    T data;
    List<TreeNode<T>> children = new ArrayList<>();

    TreeNode(T data) {
        this.data = data;
    }

    void addChild(TreeNode<T> child) {
        children.add(child);
    }
}
  1. Бинарное дерево:
class BinaryNode<T> {
    T data;
    BinaryNode<T> left, right;

    BinaryNode(T data) {
        this.data = data;
    }
}
  1. Использование стандартных коллекций (для простых случаев):
Map<String, List<String>> tree = new HashMap<>();
tree.put("root", Arrays.asList("child1", "child2"));
  1. Готовые библиотеки: Apache Commons Collections, Guava, JGraphT.

Для Android чаще используют первые два варианта, так как они дают больше контроля над структурой данных.