我有一个二进制树林,如下所示:
node(a). node(b). node(c). node(d). node(e).
node(f). node(g). node(h).
node(i).
node(j). node(k). node(l).
edge(a,b). edge(a,c). edge(b,d).
edge(f,g). edge(f,h).
edge(j,k). edge(k,l).
我有一些功能:
isLeaf(X):- node(X), \+ edge(X, _).
isRoot(X):- node(X), \+ edge(_, X).
但是我陷入困境并保持平衡。 对于身高,我首先尝试通过所有路径看到高度:
height(X, H):- edge(X, Y), height(Y, N1), N1 is H + 1.
isBalanced(X):- edge(X, Y), edge(X, Z), Y \= Z isBalanced(Y), isBalanced(Z).