Я пытаюсь определить простое двоичное дерево поиска. Он хранится в списках следующим образом: [Key, Left Tree, Right Tree]. У меня проблема с моей логикой. Это то, что у меня естьЛогическая проблема с настраиваемым деревом двоичного поиска
bstadd(K, [], [K,[],[]]).
bstadd(K, [X|_], [X, [], [K, [], []]]) :- K > X.
bstadd(K, [X, [], [K, [], []]], [X|_]) :- K < X.
Это то, что я запрашиваю
1 ?- bstadd(19, [],T1), bstadd(20,T1,T2), bstadd(21,T2,T3).
это то, что я получаю из
T1 = [19, [], []],
T2 = [19, [], [20, [], []]],
T3 = [19, [], [21, [], []]]
и это то, что мне нужно
[19, [], [20, [], [21, [], []]]]
Любая помощь будет замечательной. Я несколько дней стучал головой о стену.
Использование списков с фиксированными числами. Это плохая практика. Ваше дерево было бы лучше представлено рекурсивным 't (K, L, R)' – CapelliC