Удаление вершин из СДП

Слайд 2

Если удаляемая вершина не имеет поддеревьев:
Если на удаляемой вершине одно поддерево:
Если вершина

Если удаляемая вершина не имеет поддеревьев: Если на удаляемой вершине одно поддерево:
имеет два поддерева:

Слайд 3

Из этого дерева нужно удалить вершину 5, на её место можно поставить

Из этого дерева нужно удалить вершину 5, на её место можно поставить либо 4, либо 6.
либо 4, либо 6.

Слайд 4

Правила удаления:

а) На место удаляемой вершины ставится наибольшая вершина из её левого

Правила удаления: а) На место удаляемой вершины ставится наибольшая вершина из её
поддерева, т.е. самая правая вершина из левого поддерева, не имеющая правого поддерева.
б) На место удаляемой вершины ставится наименьшая вершина из её правого поддерева, т.е. самая левая вершина из её правого поддерева, не имеющая левого поддерева.
Будем строить алгоритмы на правиле «а»

Слайд 5

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 6

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 7

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 8

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 9

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 10

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 11

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 12

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 13

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 14

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 15

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 16

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 17

B 9 2 4 1 7 E F A D C 3

B 9 2 4 1 7 E F A D C 3 5 8 6
5 8 6

Слайд 18

p - адрес адреса удаляемой вершины
q - адрес удаляемой вершины

p

q

S

r

1

2

3

4

p - адрес адреса удаляемой вершины q - адрес удаляемой вершины p

Слайд 19

Удаление ( D, *Root)
p=&Root
DO (*p ≠ NULL) // поиск элемента
IF

Удаление ( D, *Root) p=&Root DO (*p ≠ NULL) // поиск элемента
(D<(*p)-->Data) p:=&((*p)-->Left)
ELSE IF (D>((*p)-->Data) p:=&((*p)-->Right)
ELSE OD {данные есть в дереве}
FI
OD
IF (*p ≠ NULL)
q:=*p
IF (q-->Left=NULL ) *p:=q-->Right;
ELSE IF (q-->Right=NULL ) *p:=q-->Left;
ELSE /*2 поддерева*/
r:=q-->Left ; S:=q;
Имя файла: Удаление-вершин-из-СДП.pptx
Количество просмотров: 25
Количество скачиваний: 0