Из каких основных компонентов состоит древовидная структура данных (Tree) в Java?

«Из каких основных компонентов состоит древовидная структура данных (Tree) в Java?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Древовидная структура данных (Tree) в Java состоит из узлов (Nodes), связанных отношениями "родитель-потомок". Её основные компоненты:

  1. Корень (Root Node): Самый верхний узел дерева, не имеющий родителя.
  2. Узел (Node): Основной элемент дерева, который содержит:
    • Данные (Data) — хранимое значение (например, целое число, объект).
    • Ссылки на дочерние узлы (Children) — например, left и right для бинарного дерева.
  3. Лист (Leaf Node): Узел, не имеющий дочерних элементов.
  4. Внутренний узел (Internal Node): Любой узел, имеющий хотя бы одного потомка (т.е., не являющийся листом).
  5. Родитель (Parent): Узел, имеющий ссылки на текущий узел как на дочерний.

Почему используется? Деревья эффективны для представления иерархических данных (файловая система, DOM), а также для операций поиска и сортировки (бинарные деревья поиска).

Пример реализации узла для бинарного дерева в Java:

class TreeNode<T> {
    T data; // Данные, хранимые в узле
    TreeNode<T> left;  // Ссылка на левого потомка
    TreeNode<T> right; // Ссылка на правого потомка

    public TreeNode(T data) {
        this.data = data;
        this.left = null;
        this.right = null;
    }
}

// Создание простого дерева
public class BinaryTreeExample {
    public static void main(String[] args) {
        TreeNode<Integer> root = new TreeNode<>(10); // Корень
        root.left = new TreeNode<>(5);  // Левый потомок корня
        root.right = new TreeNode<>(15); // Правый потомок корня
        // Структура:
        //       10
        //      /  
        //     5    15
    }
}