Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Алгоритм удаления элемента из 2-3 - дерева

Задание к лабораторной работе | Методические указания к выполнению задания | Функции хеширования | Разрешение коллизий и структуры хеш-таблиц | Задание к лабораторной работе | Методические указания к выполнению задания | Алгоритм пирамидальной сортировки | Итеративный алгоритм поразрядной LSD-сортировки | Алгоритм удаления из BST-дерева на основе объединения поддеревьев | Алгоритм вставки элемента в AVL-дерево |


Читайте также:
  1. XXI Международный фестиваль «ЧЕТЫРЕ ЭЛЕМЕНТА» 22 – 24 марта 2016 года на сцене Московского Театра Луны
  2. Алгоритм анализа иллюстрации
  3. Алгоритм вставки элемента в 2-3 - дерево
  4. Алгоритм вставки элемента в AVL-дерево
  5. Алгоритм захисту БД MS Access
  6. Алгоритм катетеризации мочевого пузыря.
  7. Алгоритм пирамидальной сортировки

T23_Delete (root, k)

1 root – корень 2-3 дерева

2 k –ключ удаляемого элемента

3 if root = nil

4 then return FALSE

5 if son2[ root ] = nil

6 then if key[son1[ root ]] = k

7 then Delete_Node (son1[ root ])

8 Delete_Node (root)

9 rootnil

10 return TRUE

11 else return FALSE

12 deleted ← T23_Delete1 (root, k, tmin, one)

13 if deleted = TRUE

14 then if one = TRUE

15 then if son1[ root ] ≠ LEAF

16 then t ← son1[ root ]

17 Delete_Node (root)

18 root ← t

19 else if tmin ≠ nil

20 then if k = low2[ root ]

21 then low2[ root ] ← key[tmin]

22 else if son3[ root ] ≠ nil

23 then if k = low3[ root ]

24 then low3[ root ] ← key[tmin]

25 return deleted

 

T23_Delete1(t, k, tlow1, one_son)

1 t – корень дерева / поддерева

2 k = ключ удаляемого элемента

3 tlow1 – возвращаемый адрес узла с минимальным ключом в первом поддереве

4 one_son – возвращаемый признак узла с одним сыном

5 tlow1nil

6 if1 type [son1[ t ]] = LEAF

7 then1 if2 key[son1[ t ]] = k

8 then2 Delete_Node (son1[ t ])

9 son1[ t ] ← son2[ t ]

10 son2[ t ] ← son3[ t ]

11 son3[ t ] ← nil

12 low2[ t ] ← low3[ t ]

13 else2 if3 key[son2[ t ]] = k

14 then3 Delete_Node (son2[ t ])

15 son2[ t ] ← son3[ t ]

16 son3[ t ] ← nil

17 low2[ t ] ← low3[ t ]

18 else3 if4 son3[ t ] ≠ nil & key[son3[ t ]]= k

19 then4 Delete_Node (son3[ t ])

20 son3[ t ] ← nil

21 else4 return FALSE

22 tlow1 ← son1[ t ]

23 if5 son2[ t ] = nil

24 then5 one_son ← TRUE

25 return TRUE

26 else1 t – внутренний узел

27 if6 k < low2[ t ]

28 then6 child ← 1

29 w ← son1[t]

30 else6 if7 son3[ t ]= nil or k < low3[ t ]

31 then7 child ← 2

32 w ← son2[ t ]

33 else7 child ← 3

34 w ← son3[ t ]

35 if8 T23_Delete1 (w, k, tlow1_bk, one_son_bk)=FALSE

36 then8 return FALSE

37 else8 удален один из сыновей

38 tlow1 ← tlow1_bk

39 if tlow1_bk ≠ nil

40 then if child = 2

41 then t ->low2[ t ] ← key[tlow1_bk]

42 tlow1nil

43 if child = 3

44 then low3[ t ] ← key[tlow1_bk]

45 tlow1nil

46 if one_son_bk = TRUE

47 then if9 child=1

48 then9 y ← son2[ t ]

49 if10 son3[y] ≠ nil

50 then10 son2[w] ← son1[y]

51 low2[w] ← low2[ t ]

52 low2[ t ] ← low2[y]

53 son1[y] ← son2[y]

54 son2[y] ← son3[y]

55 son3[y] ← nil

56 return FALSE

57 else10 y не имеет 3-х сыновей

58 son3[y] ← son2[y]

59 low3[y] ← low2[y]

60 son2[y] ← son1[y]

61 low2[y] ← low2[ t ]

62 son1[y] ← son1[w]

63 Delete_Node (w)

64 son1[ t ] ← son2[ t ]

65 son2[ t ] ← son3[ t ]

66 low2[ t ] ← low3[ t ]

67 son3[ t ] ← nil

68 if son2[ t ]= nil then return TRUE

50 else return FALSE

69 if child=2

70 y ← son1[ t ]

71 if son3[y] ≠ nil

72 then son2[w] ← son1[w]

73 low2[w] ← low2[ t ]

74 son1[w] ← son3[y]

75 son3[y] ← nil

76 low2[ t ] ← low3[y]

77 return FALSE

78 else z ← son3[ t ]

79 if z≠ nil and son3[z] ≠ nil

80 then son2[w] ← son1[z]

81 low2[w] ← low3[ t ]

82 low3[ t ] ← low2[z]

83 son1[z] ← son2[z]

84 son2[z] ← son3[z]

85 low2[z] ← low3[z]

86 son3[z] ← nil

87 return FALSE

69 у t нет сыновей с тремя узлами

88 son3[y] ← son1[w]

89 low3[y] ← low2[ t ]

90 Delete_Node (w)

91 son2[ t ] ← son3[ t ]

92 low2[ t ] ← low3[ t ]

93 son3[ t ] ← nil

94 if son2[ t ]= nil then return TRUE

95 else return FALSE

96 child=3

97 y ← son2[ t ]

98 if son3[y] ≠ nil

99 then son2[w] ← son1[w]

100 low2[w] ← low3[ t ]

101 son1[w] ← son3[y]

102 low2[ t ] ← low3[y]

103 son3[y] ← nil

104 else y не имеет третьего сына

105 son3[y] ← son1[w]

106 low3[y] ← low3[ t ]

107 son3[ t ] ← nil

108 Delete_Node (w)

109 return FALSE


Приложение Д


Дата добавления: 2015-11-04; просмотров: 124 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Алгоритм вставки элемента в 2-3 - дерево| Алгоритмы операций для хеш-таблицы с открытой адресацией

mybiblioteka.su - 2015-2024 год. (0.019 сек.)