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

7.3. Двоичные деревья 309

7.3.8 Представление общих деревьев с двоичными деревьями

Альтернативное представление общего дерева T получено, преобразовав T в

двоичное дерево T. (См. рисунок 7.22.) Мы предполагаем, что или T заказан или что он был произвольно заказан. Преобразование следующие:

• Для каждого узла u T, есть внутренний узел u T связан с u

• Если u - внешний узел T и не имеет родного брата, немедленно следуют -

луг это, тогда дети u в T являются внешними узлами

• Если u - внутренний узел T, и v - первый ребенок u в T, то v является левыми

ребенок u в T

• Если у узла v есть родной брат w немедленно после него, то w является правильным ребенком

из v в T

Обратите внимание на то, что внешние узлы T не связаны с узлами T и подачей

только как заполнители (следовательно, может даже быть пустым).

(a) (b)

Рисунок 7.22: Представление дерева посредством двоичного дерева: (a) дерево T; (b) двоичное дерево T связался с T. Расплющенные края соединяют узлы T связанный с узлами родного брата T.

Легко поддержать корреспонденцию между T и T, и выразить операции в T с точки зрения соответствующих операций в T. Интуитивно, мы можем думать о корреспонденции с точки зрения преобразования T в T, который берет каждого

компания родных братьевv1, v2..., vk в T с родительским v и заменяет его цепью права

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

310 Глава 7. Деревья

7.4 Упражнения

Для помощи с упражнениями, пожалуйста, посетите веб-сайт, www.wiley.com/college/goodrich. <www.wiley.com/college/goodrich>

Укрепление

R-7.1 Опишите алгоритм для подсчета числа левых внешних узлов в a

двоичное дерево, используя Двоичное дерево ADT.

R-7.2 Следующие вопросы относятся к дереву рисунка 7.3.

a. b. c. d. e. f. g. h.

Какой узел - корень? Каковы внутренние узлы? Сколько потомков делает узел cs016/, имеют? Сколько предков делает узел cs016/, имеют? Кто такие родные братья узла homeworks/? Какие узлы находятся в поддереве, внедренном в проектах узла/? Какова глубина бумаг узла/? Какова высота дерева?

R-7.3 Сочтите ценность арифметического выражения связанной с каждым поддеревом

из двоичного дерева рисунка 7.11.

R-7.4 Позвольте T быть n-узлом неподходящее двоичное дерево (то есть, каждый внутренний узел имеет

один или два ребенка). Опишите, как представлять T посредством надлежащего двоичного дерева T с O (n) узлы.

R-7.5 Что является минимальным и максимальным количеством внутренних и внешних

узлы в неподходящем двоичном дереве с n узлами? R-7.6 Покажите дерево, достигающее продолжительности худшего случая для глубины алгоритма. R-7.7 Дайте оправдание Суждения 7.4. R-7.8 Что является продолжительностью алгоритма height2 (T, v) (Кодовый Фрагмент 7.7)

когда обращено узел v отличный от корня T?

R-7.9 Позвольте T быть деревом рисунка 7.3.

a. Дайте продукцию preorderPrint (T, T.root ()) (Кодовый Фрагмент 7.10). b. Дайте продукцию parenPrint (T, T.root ()) (Кодовый Фрагмент cod:paren:Print).

R-7.10 Опишите модификацию к функции parenPrint, данной в Кодексе Frag-

ment 7.11, так, чтобы это использовало функцию размера для объектов последовательности произвести вводное представление дерева с разрывами линии и местами, добавленными, чтобы показать дерево в текстовом окне, которое является 80 широкими знаками.