Prolog二叉树高度和平衡检查

Prolog二叉树高度和平衡检查,prolog,Prolog,我有一个二叉树森林,如下所示: 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, _).

我有一个二叉树森林,如下所示:

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).
你如何定义“平衡”?我没有看到一个定义(用文字或代码)来说明哪棵树是平衡的。另外,
height/2
isBalanced/2
都是无限递归的明显例子(没有对其他错误进行注释)。您如何准确定义“balanced”?我没有看到一个定义(用文字或代码)来说明哪棵树是平衡的。另外,
height/2
isBalanced/2
都是无限递归的明显例子(没有对其他错误进行评论)。