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

Алгоритм вставки элемента в 2-3 - дерево

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


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

T23_Insert (root, k, data)

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

2 k –ключ

3 data - данные

4 lt ← Create_Leaf (k, data)

5 if root = nil

6 then rootCreate_Internal

7 son1[ root ] ← lt

8 son2[ root ] ← son3[ root ] ←nil

9 return TRUE

10 if son2[ root ] = nil

11 then if key[son1] < k

12 then son2[ root ] ← lt

13 low2[ root ]← k

14 return TRUE

15 else if key[son1] > k

16 then son2[ root ] ← son1[ root ]

17 low2[ root ] ←key[son1[ root ]]

18 son1[ root ] ← lt

19 return TRUE

20 else Delete_Leaf (lt)

21 return FALSE

22 inserted ← Insert1 (root, lt, tbk, lbk)

23 if inserted = TRUE

24 then if tbk ≠ nil

25 then temp ← root

26 rootnew Internal

27 son1[ root ] ← temp

28 son2[ root ] ← tbk

29 low2[ root ] ← lbk

30 son3[ root ] ← nil

31 return inserted

T23_Insert1(t, lt, tup, lup)

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

2 lt – новый узел - лист

3 tup - возвращаемый после расщепления адрес нового узла

4 lup – возвращаемый минимальный ключ в поддереве нового узла

5 tupnil

6 if1 type[ t ] = LEAF

7 then1 if2 key[ t ] = key[ lt ]

8 then2 return FALSE

9 else2 tuplt

10 if3 key[ t ] < key[ lt ]

11 then3 lup ← key[ lt ]

12 else3 lup ← key[ t ]

13 temp 1 ← key[ t ]

14 key[ t ] ← key[ lt ]

15 key[ lt ] ← temp 1

16 temp 2 ← data[ t ]

17 data[ t ] ← data[ lt ]

18 data[ lt ] ← temp 2

19 return TRUE

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

21 if4 key[ lt ] < low2[ t ]

22 then4 child ← 1

23 w ← son1[ t ]

24 else4 if5 son3[ t ] = nil or (son3[ t ] ≠ nil and key[ lt ] < low3[ t ])

25 then5 child ← 2

26 w ← son2[ t ]

27 else5 child ← 3

28 w ← son3[ t ]

29 inserted ← T23_Insert1 (w, lt, tbk, lbk)

30 if6 inserted = TRUE

31 then6 if7 tbk ≠ nil

32 then7 if8 son3[ t ] = nil узел имел 2-х сыновей

33 then8 if9 child = 2

34 then9 son3[ t ] ← tbk

35 low3[ t ] ← lbk

36 else9 son3[ t ] ← son2[ t ]

37 low3[ t ] ← low2[ t ]

38 son2[ t ] ← tbk

39 low2[ t ] ← lbk

40 else8 узел имел 3-х сыновей

41 tupCreate_Internal()

42 if10 child = 3

43 then10 выполнялась вставка в третье поддерево

44 son1[ tup ] ← son3[ t ]

45 son2[ tup ] ← tbk

46 son3[ tup ] ← nil

47 low2[ tup ] ← lbk

48 son3[ t ] ← nil

49 lup ← low3[ t ]

50 else10 выполнялась вставка в 1-е или 2-е поддерево

51 son2[ tup ] ← son3[ t ]

52 low2[ tup ] ← low3[ t ]

53 son3[ tup ] ← nil

54 if11 child = 2 выполнялась вставка во 2-е подд-во

55 then11 son1[ tup ] ← tbk

56 lup ← lbk

57 if12 child = 1 выполнялась вставка во 1-е подд-во

58 then12 son1[ tup ] ← son2[ t ]

59 son2[ t ] ← tbk

60 lup ← low2[ t ]

61 low2[ t ] ← lbk

62 son3[ t ] ← nil

63 return inserted

 


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


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

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