In-order обход бинарного дерева на Java — рекурсивный алгоритм

Симметричный обход (inorder traversal) — это обход, при котором сначала посещается левое поддерево, затем сам узел, и только потом правое поддерево. На бинарном дереве поиска такой обход выводит элементы в отсортированном порядке.

Чтобы понять этот пример, нужно знать:

  • Классы и объекты в Java

  • Методы в Java

Пример: симметричный обход дерева на Java

class Node {
  int item;
  Node left, right;

  public Node(int key) {
  item = key;
  left = right = null;
  }
}

class Tree {
  // root of Tree
  Node root;

  Tree() {
  root = null;
  }

  void inOrder(Node node) {
    if (node == null)
      return;

    // traverse the left child
    inOrder(node.left);

    // traverse the root node
    System.out.print(node.item + "->");

    // traverse the right child
    inOrder(node.right);
  }

  public static void main(String[] args) {

    // create an object of Tree
    Tree tree = new Tree();

    // create nodes of tree
    tree.root = new Node(1);
    tree.root.left = new Node(12);
    tree.root.right = new Node(9);

    // create child nodes of left child
    tree.root.left.left = new Node(5);
    tree.root.left.right = new Node(6);

    System.out.println("In Order traversal");
    tree.inOrder(tree.root);
  }
}

Вывод:

In Order traversal
5->12->6->1->9->

В этом примере мы выполнили симметричный обход того же дерева. Корень 1 оказался в середине вывода — между элементами левого поддерева (5->12->6) и правым потомком (9).

Совет

Если дерево является бинарным деревом поиска (BST), inorder-обход всегда выводит значения по возрастанию. Это удобный способ проверить корректность BST.