
III. Вопрос 25.3
• del( S, X, S1). Удаление элемента X из набора данных S и получение набора
данных S1.
1 del( t(X,nil, nil), X, nil ).
2 del( t(X,Left, nil), X, Left ).
3 del( t(X,nil, Right), X, Right ).
4 del( t(X,Left, Right), X, t(Y,Left, Right) ):−
5 delmin( Right, Y, Right1 ).
6 del( t(Root,Left, Right), X, t(Root,Left1, Right) ):−
7 gt(Root, X),
8 del( Left, Y, Left1 ).
9 del( t(Root,Left, Right), X, t(Root,Left, Right1) ):−
10 gt(X, Root),
11 del( Right, Y, Right1 ).
12 delmin(t(Y, nil, R), Y, R).
13 delmin(t(Root,Left, Right), Y, t(Root,Left1, Right)):−
14 delmin(Left, Y, Left1).
Вставка и удаление, на любом уровне, в одном лице: Хотим ввести X в дерево D
• Ввод X в корень. X – новый корень
• Перемешения:
– D > X вставить в левое поддерево
– D < X вставить в правое поддерево
Страница 203/205 Ивана Братко.
1 add(Tree, X, NewTree):− addroot(Tree, X, NewTree).
2 add(t(Y, L, R), X, t(Y, L1, R)):− gt(Y, X), add(L, X, L1).
3 add(t(Y, L, R), X, t(Y, L, R1)):− gt(X, Y), add(R, X, R1).
4 addroot(nil, X, t(X, nil, nil)).
5 addroot(t(Y, L, R), X, t(X, L1, t(Y, L2, R))):−
6 gt(Y, X), addroot(L, X, t(X, L1, L2)).
7 addroot(t(Y, L, R), X, t(X, t(Y, L, R1), R2)):−
8 gt(Y, X), addroot(R, X, t(X, R1, R2)).
57