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

Прямой обход (preorder 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 preorder(Node node) {
    if (node == null)
      return;

    // traverse the root node
    System.out.print(node.item + "->");
    // traverse the left child
    preorder(node.left);
    // traverse the right child
    preorder(node.right);
  }

  public static void main(String[] args) {
    // create object of tree
    Tree tree = new Tree();

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

    // preorder tree traversal
    System.out.println("\nPreorder traversal ");
    tree.preorder(tree.root);
  }
}

Вывод:

Preorder traversal
1->12->5->6->9->

В этом примере мы реализовали структуру дерева и выполнили прямой обход. Порядок «корень → левое → правое» хорошо видно по результату: сначала идёт 1 (корень), затем поддерево с корнем 12, и только потом правый потомок 9.

Подсказка

Запомнить три обхода легко по положению корня: preorder — корень в начале, inorder — в середине, postorder — в конце.