Обход дерева: обратный порядок, предварительный порядок и обратный порядок, объясненные примерами

Я объясню концепции обхода деревьев, используя три популярных метода: прямой порядок, предварительный порядок и обратный порядок.

  1. Обход по порядку:
    При обходе по порядку сначала посещается левое поддерево, затем корневой узел, а затем правое поддерево. Этот метод обхода обычно используется для извлечения значений из двоичного дерева поиска в порядке возрастания.

Вот псевдокод для обхода по порядку:

inorder(node):
    if node is not null:
        inorder(node.left)
        visit(node)
        inorder(node.right)
  1. Обход по предварительному заказу:
    При обходе по предварительному заказу сначала посещается корневой узел, затем левое поддерево, а затем правое поддерево. Обход по предварительному порядку полезен для создания копии дерева, а также для получения префиксных выражений дерева выражений.

Вот псевдокод для обхода предзаказа:

preorder(node):
    if node is not null:
        visit(node)
        preorder(node.left)
        preorder(node.right)
  1. Обход в обратном порядке:
    При обходе в обратном порядке сначала посещается левое поддерево, затем правое поддерево, а затем корневой узел. Обход постпорядка обычно используется для удаления дерева или получения постфиксного выражения дерева выражений.

Вот псевдокод для обратного обхода:

postorder(node):
    if node is not null:
        postorder(node.left)
        postorder(node.right)
        visit(node)

Эти три метода предоставляют разные способы обхода дерева и полезны в различных древовидных алгоритмах и приложениях.