Python

Код Python для печати двоичного дерева

Двоичное дерево — это тип структуры данных, в которой каждый узел имеет не более двух дочерних элементов, называемых левым дочерним элементом и правым дочерним элементом. Двоичные деревья используются в различных аспектах информатики, включая сортировку и поиск. В этом уроке мы создадим бинарное дерево в Python и завершим Код Python для печати двоичного дерева.

Шаг 1: Определите бинарное дерево

Во-первых, нам нужно создать структуру бинарного дерева. Здесь мы определим простой класс Node:

class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

Этот класс представляет узел в двоичном дереве, который содержит некоторые данные и указатели на своих левых и правых дочерних элементов.

Шаг 2: Вставьте данные в двоичное дерево

Чтобы вставить данные в дерево, мы определим функцию вставки:

def insert(root, data):
    if root is None:
        return Node(data)
    else:
        if data <= root.data:
            root.left = insert(root.left, data)
        else:
            root.right = insert(root.right, data)
        return root

В этой функции, если дерево пусто (т. е. корень None), мы создаем новый узел с заданными данными и возвращаем его. Если дерево не пусто, мы рекурсивно вставляем данные в левое или правое поддерево в зависимости от его значения.

Шаг 3: Распечатайте бинарное дерево

Есть несколько способов «напечатать» бинарное дерево. Здесь мы реализуем методы обхода по порядку, предварительному и последующему порядку:

  • Обход по порядку: в этом методе обхода сначала посещается левое поддерево, затем корень, а затем правое поддерево.
def print_inorder(root):
    if root:
        print_inorder(root.left)
        print(root.data, end=" ")
        print_inorder(root.right)
  • Предварительный обход: в этом методе обхода сначала посещается корневой узел, затем левое поддерево и, наконец, правое поддерево.
def print_preorder(root):
    if root:
        print(root.data, end=" ")
        print_preorder(root.left)
        print_preorder(root.right)
  • Пост-порядковый обход: в этом методе обхода корневой узел посещается последним. Сначала мы обходим левое поддерево, затем правое поддерево и, наконец, корневой узел.

Шаг 4: Код Python для печати двоичного дерева

Вот полный код:

class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

def insert(root, data):
    if root is None:
        return Node(data)
    else:
        if data <= root.data:
            root.left = insert(root.left, data)
        else:
            root.right = insert(root.right, data)
        return root

def print_inorder(root):
    if root:
        print_inorder(root.left)
        print(root.data, end=" ")
        print_inorder(root.right)

def print_preorder(root):
    if root:
        print(root.data, end=" ")
        print_preorder(root.left)
        print_preorder(root.right)

def print_postorder(root):
    if root:
        print_postorder(root.left)
        print_postorder(root.right)
        print(root.data, end=" ")

root = Node(50)

root = insert(root, 30)
root = insert(root, 20)
root = insert(root, 40)
root = insert(root, 70)
root = insert(root, 60)
root = insert(root, 80)

print("In-order traversal:")
print_inorder(root)

print("\nPre-order traversal:")
print_preorder(root)

print("\nPost-order traversal:")
print_postorder(root)

Когда вы запустите этот код, он создаст двоичное дерево и напечатает дерево, используя обходы в порядке, в порядке предварительного и после порядка.

Заключение

В этом руководстве по Python я объяснил бинарное дерево в Python и Код Python для печати двоичного дерева.

Вам также может понравиться:


Ссылка на источник

Похожие статьи

Кнопка «Наверх»