Pilha Binária AVL (teste de Balanace)
Eu estou tentando alcançar um teste se uma árvore é uma árvore AVL ou não usando o prólogo.
Eu fiz um teste de altura que funciona para os testes que fiz até agora, mas meu teste de equilíbrio ainda não está indo forte.
Este é o meu trabalho até agora:
avl('Branch'(LeftBranch,RightBranch)) :-
height(LeftBranch,H1),
height(RightBranch,H2),
abs(H1-H2) =< 1.
Eu baseei esse código em um código mais antigo de stackoverflow. Mas isso não funciona em todos os casos. Incluirá meu código de altura. Em algum lugar eu fiz um erro e tenho certeza de onde encontrá-lo.
height(leaf(_),1).
height('Branch'(LeftBranch,RightBranch,H) :-
height(LeftBranch,H1),
height(RightBranch,H2),
H is max(H1,H2)+1.
Por que meu código não avalia algumas árvores?
Prolog - árvore equilibrada ou não
Este foi o tópico em que eu baseei meu teste de árvore de balanace, e eu tentei com a árvore que ele postou nos comentários, mas eu falhei, alguma idéia?