Построение сбалансированного дерева поиска

Содержание

Слайд 2

АЛГОРИТМ ПОСТРОЕНИЯ
СБАЛАНСИРОВАННОГО ДЕРЕВА ПОИСКА
При добавлении узла считаем баланс его «отца» (p)

АЛГОРИТМ ПОСТРОЕНИЯ СБАЛАНСИРОВАННОГО ДЕРЕВА ПОИСКА При добавлении узла считаем баланс его «отца»
и «деда» (gp) и всех остальных «предков»
Баланс узла определяется как разность высот его правого и левого поддерева:
h = R – L
Если для какого-то узла (u) h(gp) = 2 или –2 то делаем однократный или двукратный поворот.

Слайд 3

А именно:
а) если h(gp) ⋅ h(p) > 0 и h(p)<0 – R
(один раз

А именно: а) если h(gp) ⋅ h(p) > 0 и h(p) (один
поворот направо относительно p)
(т.е. p станет «главой семьи», gp – правым «сыном»)
Более сложная ситуация:

Слайд 4

б) если h(gp) ⋅ h(p) > 0 и h(p) >0 – L
(один раз

б) если h(gp) ⋅ h(p) > 0 и h(p) >0 – L
поворот налево относительно p)
(т.е. p станет «главой семьи», gp – левым «сыном»)
Более сложная ситуация:

Слайд 5

в) если h(gp) ⋅ h(p)<0 и h(p)>0 – двукратный поворот LR
т.е. 1) сначала налево

в) если h(gp) ⋅ h(p) 0 – двукратный поворот LR т.е. 1)
относительно u
(«отец» и «сын» меняются ролями),
2) затем направо относительно u
(«сын» становится «главой семьи»)
В итоге: p станет левым «сыном», gp – правым «сыном», «родителем» станет бывший правый «сын» u.

Слайд 6

Более сложная ситуация поворота LR:

Более сложная ситуация поворота LR:

Слайд 7

г) если h(gp) ⋅ h(p)<0 и h(p)<0 – двукратный поворот RL
т.е. 1) сначала направо

г) если h(gp) ⋅ h(p) т.е. 1) сначала направо относительно u («отец»
относительно u
(«отец» и «сын» меняются ролями),
2) затем налево относительно u
(«сын» становится «главой семьи»).
В итоге: p станет правым «сыном», gp – левым «сыном», «родителем» станет бывший левый «сын» u

Слайд 8

Более сложная ситуация поворота RL:

Более сложная ситуация поворота RL:

Слайд 9

Задача. Построить сбалансированное дерево для массива ключей
{20, 15, 5, 30, 55, 25,

Задача. Построить сбалансированное дерево для массива ключей {20, 15, 5, 30, 55,
10, 6, 2, 17, 35, 40, 27, 11, 26}

Шаг 1:

Шаг 2:

Слайд 11

{30, 55, 25, 10, 6, 2, 17, 35, 40, 27, 11, 26}

Шаг

{30, 55, 25, 10, 6, 2, 17, 35, 40, 27, 11, 26} Шаг 3:
3:

Слайд 12

{55, 25, 10, 6, 2, 17, 35, 40, 27, 11, 26}

Шаг 4:

{55, 25, 10, 6, 2, 17, 35, 40, 27, 11, 26} Шаг 4:

Слайд 14

{25, 10, 6, 2, 17, 35, 40, 27, 11, 26}

Шаг 5:

{25, 10, 6, 2, 17, 35, 40, 27, 11, 26} Шаг 5:

Слайд 15

Поворот RL:

Поворот RL:

Слайд 16

{10, 6, 2, 17, 35, 40, 27, 11, 26}

Шаг 6:

{10, 6, 2, 17, 35, 40, 27, 11, 26} Шаг 6:

Слайд 17

Поворот LR:

Поворот LR:

Слайд 18

{6, 2, 17, 35, 40, 27, 11, 26}

Шаг 7:

{6, 2, 17, 35, 40, 27, 11, 26} Шаг 7:

Слайд 19

{2, 17, 35, 40, 27, 11, 26}

Шаг 8:

{2, 17, 35, 40, 27, 11, 26} Шаг 8:

Слайд 20

{17, 35, 40, 27, 11, 26}

Шаг 9:

{17, 35, 40, 27, 11, 26} Шаг 9:

Слайд 21

{35, 40, 27, 11, 26}

Шаг 10:

{35, 40, 27, 11, 26} Шаг 10:

Слайд 22

{ 40, 27, 11, 26}

Шаг 11:

{ 40, 27, 11, 26} Шаг 11:

Слайд 23

Поворот LR:

Поворот LR:

Слайд 24

{27, 11, 26}

Шаг 12:

{27, 11, 26} Шаг 12:

Слайд 25

{11, 26}

Шаг 13:

{11, 26} Шаг 13:

Слайд 26

{26}

Шаг 14:

{26} Шаг 14:

Слайд 27

Поворот RL:

Поворот RL:
Имя файла: Построение-сбалансированного-дерева-поиска.pptx
Количество просмотров: 20
Количество скачиваний: 0