Рубрики
Без рубрики

Двоичная реализация дерева в Python

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

Автор оригинала: Pankaj Kumar.

Двоичная реализация дерева в Python

В этом руководстве мы узнаем о том, какие бинарные деревья, и мы будем изучать базовые концепции за структурой данных двоичных деревьев. Мы также реализуем их с использованием классов в Python.

Что такое бинарное дерево?

Двоичное дерево – это структура данных, в которой есть родительский объект, и каждый объект может иметь ноль, один или два детей. Как правило, мы называем объект узлом, и каждый узел состоит из поля данных, ссылки на левый ребенок и ссылку на правильный ребенок.

AskPython11.

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

class BinaryTreeNode:
  def __init__(self, data):
    self.data = data
    self.leftChild = None
    self.rightChild=None

Здесь конструктор принимает значение данных в качестве ввода, создает объект Бинаринариноде Введите и инициализируйте поле данных, равное данному вводу и инициализируют ссылки на левый ребенок и правый ребенок до Нет Отказ

Основные терминологии в бинарных деревьях

Теперь мы возьмем пример бинарного дерева и посмотрите на терминологии, связанные с ним. Предположим, нам дали ниже двоичное дерево.

Askpython21.
  • Корневой узел : Самый верхний узел бинарного дерева называется его корневым узлом. Это первый узел, созданный во время создания дерева. В приведенном выше примере 10 является корневым узлом.
  • Родительский узел : Родитель узла – это узел, чей левой ссылкой или правой ссылкой указывает на текущий узел. Например, 10 является родительским узлом 15.
  • Детский узел : Узел, на котором указывается родительский узел, называется его дочерним узлом. Здесь 15 – детский узел 10.
  • Край : Край – это ссылка, соединяющая любые два узла в дереве.
  • Внутренние узлы: внутренние узлы – это узлы, которые имеют по крайней мере один ребенок. В нашем примере узлы, содержащие данные 10,15 и 20, являются внутренними узлами.
  • Узел листьев или внешние узлы : Это узлы в бинарном дереве, которые не имеют детей. Их как левый, так и правый, относящийся к Нет Отказ В приведенном выше примере узлы с данными 60, 14, 25 и 6 являются узлами листа или внешние узлы.

Реализация бинарного дерева в Python

Теперь мы постараемся реализовать двоичное дерево, приведенное в приведенном выше примере в следующем коде:

class BinaryTreeNode:
  def __init__(self, data):
    self.data = data
    self.leftChild = None
    self.rightChild = None
    
a1=BinaryTreeNode(10)
a2=BinaryTreeNode(15)
a3=BinaryTreeNode(20)
a4=BinaryTreeNode(60)
a5=BinaryTreeNode(14)
a6=BinaryTreeNode(25)
a7=BinaryTreeNode(6)

a1.leftChild=a2
a1.rightChild=a3
a2.leftChild=a4
a2.rightChild=a5
a3.leftChild=a6
a3.rightChild=a7

print("Root Node is:")
print(a1.data)

print("left child of node is:")
print(a1.leftChild.data)

print("right child of node is:")
print(a1.rightChild.data)

print("Node is:")
print(a2.data)

print("left child of node is:")
print(a2.leftChild.data)

print("right child of node is:")
print(a2.rightChild.data)

print("Node is:")
print(a3.data)

print("left child of node is:")
print(a3.leftChild.data)

print("right child of node is:")
print(a3.rightChild.data)

print("Node is:")
print(a4.data)

print("left child of node is:")
print(a4.leftChild)

print("right child of node is:")
print(a4.rightChild)

print("Node is:")
print(a5.data)

print("left child of node is:")
print(a5.leftChild)

print("right child of node is:")
print(a5.rightChild)

print("Node is:")
print(a6.data)

print("left child of node is:")
print(a6.leftChild)

print("right child of node is:")
print(a6.rightChild)

print("Node is:")
print(a7.data)

print("left child of node is:")
print(a7.leftChild)

print("right child of node is:")
print(a7.rightChild)

Выход:

Root Node is:
10
left child of node is:
15
right child of node is:
20
Node is:
15
left child of node is:
60
right child of node is:
14
Node is:
20
left child of node is:
25
right child of node is:
6
Node is:
60
left child of node is:
None
right child of node is:
None
Node is:
14
left child of node is:
None
right child of node is:
None
Node is:
25
left child of node is:
None
right child of node is:
None
Node is:
6
left child of node is:
None
right child of node is:
None

Как вы можете видеть, в вышеуказанном коде мы впервые создали объекты Бинаринариноде Класс, определенный в примере. Затем мы присваиваем корню дерева, а затем мы добавили детей в корневой узел и так далее. Затем мы напечатали данные в каждом узле и данные в своем детском узле.

Заключение:

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

Счастливое обучение!