예제 #1
0
from source.T6_Trees.P1.L3_Tree import createSampleTree


def DFS(root):
    """ Обхід дерева в глибину
    :param root: корінь дерева з якого починається обхід
    """
    # запускаємо DFS для всіх дітей кореня
    for child in root.getChildren():
        DFS(child)

    print(root.key(), end=" -> ")  # Опрацьовуємо корінь після опрацювання дітей


if __name__ == "__main__":
    tree = createSampleTree()
    DFS(tree)
예제 #2
0

def search(root, elem):
    """ Пошук заданого елемента у дереві
    Використовується пошук в ширину

    :param root: корінь дерева
    :param elem: шуканий елемент
    :return: True, якщо шуканий елемент міститься у дереві
    """

    q = Queue()  # Черга для опрацьованих вузлів
    q.enqueue(root)  # Додаємо у чергу корінь дерева

    while not q.empty():  # Поки черга не порожня
        node = q.dequeue()  # Беремо перший вузол з черги
        if node.key() == elem:  # Якщо елемент знайдено
            return True  # Припиняємо пошук, повертаємо True

        # Додаємо в чергу всіх дітей поточного вузла
        for child in node.getChildren():
            q.enqueue(child)

    return False  # Повертаємо False – дерево не містить шуканого елементу


# Головна програма
if __name__ == "__main__":
    tree = createSampleTree()  # підпрограма створення дерева
    print(search(tree, 13))  # запуск обходу в ширину