Бинарное дерево на Java — пошаговая реализация с разбором
Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет не более двух потомков: левого и правого. В отличие от других структур данных, в Java нет встроенного класса для деревьев, поэтому мы реализуем его самостоятельно.
Чтобы понять этот пример, нужно знать:
Классы и объекты в Java
Методы в Java
Пример: реализация бинарного дерева на Java
// class to create nodes
class Node {
int key;
Node left, right;
public Node(int item) {
key = item;
left = right = null;
}
}
class BinaryTree {
Node root;
// Traverse tree
public void traverseTree(Node node) {
if (node != null) {
traverseTree(node.left);
System.out.print(" " + node.key);
traverseTree(node.right);
}
}
public static void main(String[] args) {
// create an object of BinaryTree
BinaryTree tree = new BinaryTree();
// create nodes of the tree
tree.root = new Node(1);
tree.root.left = new Node(2);
tree.root.right = new Node(3);
tree.root.left.left = new Node(4);
System.out.print("\nBinary Tree: ");
tree.traverseTree(tree.root);
}
}
Вывод:
Binary Tree: 4 2 1 3
В этом примере мы реализовали бинарное дерево на Java. Класс Node представляет один узел и хранит значение key, а также ссылки на левого и правого потомка. Класс BinaryTree хранит корень и предоставляет метод traverseTree(), который рекурсивно обходит дерево.
Примечание
В Java нет встроенного класса для деревьев — в отличие от ArrayList или HashMap, дерево нужно описать своим классом.
Совет
Метод traverseTree() в этом примере выполняет именно симметричный (inorder) обход: сначала левое поддерево, потом сам узел, затем правое поддерево.