Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

7.4. Упражнения 317

C-7.32 Опишите нерекурсивный метод для выполнения туристического пересечения Эйлера

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

C-7.33 Опишите, в псевдокодексе, нерекурсивном методе для выполнения в -

закажите пересечение двоичного дерева в линейное время. (Намек: Используйте стек.)

C-7.34 Позвольте T быть двоичным деревом с n узлами (T, может или может не быть понят с a

вектор). Дайте линейно-разовый метод, который использует функции интерфейса Binary Tree, чтобы пересечь узлы T, увеличивая стоимости функции нумерации уровня f данный в Разделе 7.3.5. Это пересечение известно как пересечение заказа уровня. (Намек: Используйте очередь.)

C-7.35 Длина пути дерева T является суммой глубин всех узлов в T.

Опишите линейно-разовый метод для вычисления длины пути дерева T (который является не обязательно двойным).

C-7.36 Определите внутреннюю длину пути, я (T), дерева T, чтобы быть суммой

глубины всех внутренних узлов в T. Аналогично, определите внешнюю длину пути, E (T), дерева T, чтобы быть суммой глубин всех внешних узлов в T. Покажите это, если T - двоичное дерево с n внутренними узлами, то E (T) = я (T) + 2n. (Намек: Используйте факт, что мы можем построить T из единственного узла корня через ряд операций n expandExternal.)

Проекты

P-7.1 Напишите программу, которая берет в качестве входа внедренное дерево T и узел v T и

новообращенные T к другому дереву с тем же самым набором окрестностей узла, но теперь внедренный в v.

P-7.2 Дайте полностью универсальное внедрение класса использование LinkedBinaryTree

шаблоны класса и состояние ошибки принятия во внимание. P-7.3 Осуществите двоичное дерево ADT использование вектора. P-7.4 Осуществите двоичное дерево ADT использование связанной структуры. P-7.5 Напишите программу, которая тянет двоичное дерево. P-7.6 Напишите программу, которая тянет общее дерево. P-7.7 Напишите программу, которая может ввести и показать родословную человека. P-7.8 Осуществите представление двоичного дерева дерева ADT. Вы можете снова использовать

внедрение LinkedBinaryTree двоичного дерева.

318

Глава 7. Деревья p-7.9 разрезание floorplan являются разложением прямоугольника с горизонтальным и

вертикальные стороны, используя горизонтальные и вертикальные сокращения (см. рисунок 7.24 (a)). Разрезание floorplan может быть представлено двоичным деревом, названным режущим деревом, внутренние узлы которого представляют сокращения, и чьи внешние узлы repre-послали основные прямоугольники, в которые floorplan анализируется сокращениями (см. рисунок 7.24 (b)). Проблема уплотнения определена следующим образом. Предположите, что каждому основному прямоугольнику разрезания floorplan назначают минута - imum ширина w и минимальная высота h. Проблема уплотнения состоит в том, чтобы найти наименьшую высоту и ширину для каждого прямоугольника slic-луга floorplan, который совместим с минимальными размерами основных прямоугольников. А именно, эта проблема требует назначения ценностей h (v) и w (v) к каждому узлу v режущего дерева, такого что





w

если v - внешний узел чей основной rect-

у угла есть минимальная ширина w



 макс. (w (w), w (z)) горизонтальное сокращение с покинутым ребенком w и правом, если v - внутренний узел, связанный с a

w (v) = 





 w (w) + w (z)

ребенок z

если v - внутренний узел, связанный с













h

вертикальное сокращение с покинутым ребенком w и правильным ребенком z

если v - внешний узел, у основного угла rect-которого есть минимальная высота h

если v - внутренний узел, связанный с a

h (v) = 

h (w) + h (z)

горизонтальное сокращение с покинутым ребенком w и правильным ребенком z



 макс. (h (w), h (z)) iaf vveritsican ciunttewniahl neodechaisdowiaated rwgithht r sc

 al t l ft l без обозначения даты я

 ребенок z Дизайн структура данных для разрезания floorplans, который поддерживает следующие операции:

• Создайте floorplan, состоящий из единственного основного прямоугольника

• Анализируйте основной прямоугольник посредством горизонтального сокращения • Анализируйте основной прямоугольник посредством вертикального сокращения • Назначьте минимальную высоту и ширину к основному прямоугольнику • Потяните режущее дерево, связанное с floorplan • Уплотните floorplan • Потяните уплотненный floorplan