Я хочу написать программу, которая сообщает мне, сбалансировано ли дерево или нет. В этом случае сбалансированный означает одинаковую высоту или перепад высот 1.
Это то, что я написал до сих пор, но это не работает для разницы в высоте 1. Почему?
balanced(l(_)).
balanced(b(B1, B2)):-
height(B1,H),
height(B2,H),
balanced(B1),
balanced(B2).
balanced(b(B1,B2)):-
height(B1,H + 1),
height(B2,H),
balanced(B1),
balanced(B2).
balanced(b(B1,B2)):-
height(B1,H),
height(B2,H + 1),
balanced(B1),
balanced(B2).