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

Алгоритмы Решение проблем: вставьте в двоичное дерево поиска

Решение алгоритмов проблем с TK. Теги с алгоритмами, Python, Computerscience, интервью.

Этот пост является частью Алгоритмы решения проблем ряд.

Описание проблемы

Это Вставьте в бинарное дерево поиска проблема. Описание выглядит так:

Учитывая корневой узел двоичного дерева поиска (BST) и значение, которое должно быть вставлено в дерево, вставьте значение в BST. Вернуть корневой узел BST после вставки. Гарантируется, что новое значение не существует в исходной BST.

Обратите внимание, что для вставки могут существовать несколько достоверных способов, пока дерево остается BST после вставки. Вы можете вернуть любого из них.

Примеры

Given the tree:
        4
       / \
      2   7
     / \
    1   3

And the value to insert: 5

The return BST could be

         4
       /   \
      2     7
     / \   /
    1   3 5

Решение

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

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

Если это больше, идите на правую сторону дерева. Если это меньше, идите на левую сторону. Если текущий узел – Нет Или, другими словами, у последнего дерева узел не было ребенка, мы просто возвращаем новое дерево с значением для вставки в соответствующего ребенка.

def insert_into_BST(root, val):
    if root is None:
        return TreeNode(val)

    if val < root.val:
        root.left = insert_into_BST(root.left, val)

    if val > root.val:
        root.right = insert_into_BST(root.right, val)

    return root

Ресурсы

Оригинал: “https://dev.to/teekay/algorithms-problem-solving-insert-into-binary-search-tree-2l27”