Генерация тестовых случаев | Набор 6 (случайное невзвешенное двоичное дерево)
Опубликовано: 22 Сентября, 2022
Создание случайного невзвешенного двоичного дерева :
- Поскольку это дерево, план генерации тестовых данных таков, что цикл не формируется.
- Количество ребер на единицу меньше количества вершин.
- Для каждого RUN сначала выведите количество узлов, скажем, N , а следующие N – 1 строк имеют форму (a, b), где a является родителем b.
- Каждый узел содержит не более 2 детей.
Подход: Проблема может быть решена с помощью Queue. Идея состоит в том, чтобы пройти по дереву с помощью BFS. Выполните следующие шаги, чтобы решить проблему:
- Инициализируйте карту, скажем, mp , чтобы проверить, включен ли узел в дерево или нет.
- Инициализируйте очередь для хранения узлов на каждом уровне дерева.
- Считайте 1 корневым узлом и вставьте его в очередь.
- Перебирать очередь, пока общее количество узлов в дереве не равно N . На каждой итерации вставляйте отдельные узлы каждого уровня дерева в очередь, используя функцию rand() и карту, а также вставляйте узел и родителя узла в массив
- Наконец, выведите значение N и массив.