Автор оригинала: Pankaj Kumar.
Двоичная реализация дерева в Python
В этом руководстве мы узнаем о том, какие бинарные деревья, и мы будем изучать базовые концепции за структурой данных двоичных деревьев. Мы также реализуем их с использованием классов в Python.
Что такое бинарное дерево?
Двоичное дерево – это структура данных, в которой есть родительский объект, и каждый объект может иметь ноль, один или два детей. Как правило, мы называем объект узлом, и каждый узел состоит из поля данных, ссылки на левый ребенок и ссылку на правильный ребенок.
Как мы можем видеть структуру выше, узел будет иметь свои собственные данные, и у него также будут ссылки на два узла, один слева и другие на правой стороне. Для реализации вышеуказанной структуры мы можем определить класс и назначить значения данных и ссылки на левый ребенок и правый ребенок.
class BinaryTreeNode: def __init__(self, data): self.data = data self.leftChild = None self.rightChild=None
Здесь конструктор принимает значение данных в качестве ввода, создает объект Бинаринариноде
Введите и инициализируйте поле данных, равное данному вводу и инициализируют ссылки на левый ребенок и правый ребенок до Нет
Отказ
Основные терминологии в бинарных деревьях
Теперь мы возьмем пример бинарного дерева и посмотрите на терминологии, связанные с ним. Предположим, нам дали ниже двоичное дерево.
- Корневой узел : Самый верхний узел бинарного дерева называется его корневым узлом. Это первый узел, созданный во время создания дерева. В приведенном выше примере 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
Как вы можете видеть, в вышеуказанном коде мы впервые создали объекты Бинаринариноде
Класс, определенный в примере. Затем мы присваиваем корню дерева, а затем мы добавили детей в корневой узел и так далее. Затем мы напечатали данные в каждом узле и данные в своем детском узле.
Заключение:
В этой статье мы смотрели на теоретические концепции бинарного дерева, а затем мы реализовали бинарное дерево на основе концепций. Оставайтесь настроиться на более информативные учебные пособия.
Счастливое обучение!