Это упражнение 3.5 от Узнать пролог сейчас. Они выразились перед объяснением списков, поэтому мне нужна процедура, которая не включает списки.Обмен двоичных деревьев в прологе
Задача состоит в замене листьев вложенных двоичных деревьев. Если запрос
swap(tree(tree(leaf(1), leaf(2)), leaf(4)), T).
ответ должен быть
T = (tree(leaf(4), tree(leaf(2), leaf(1))).
С
swap((X, Y), (Y, X)).
swap(tree(X, Y), T) :-
swap((X, Y), (Y, X)),
T = (Y, X).
Я получаю
T = (leaf(4), tree(leaf(1), leaf(2))).
Как вы видите leaf(1)
и leaf(2)
не г et сменяется. Мне нужны некоторые подсказки или даже ваша процедура, и она должна работать с любой глубиной узлов. Благодарю.
Это прописано s.w.a.p.p.e.d. и s.w.a.p.p.i.n. –
Также написано e.d.i.t. – SQB
Благодарим за исправления. Я знаю, что мой английский далеко не хорош. Провация в Италии. – vincent