如果树是 AVL 树或不使用 prolog,我正在尝试实现测试。
我做了一个高度测试,适用于我迄今为止所做的测试,但我的平衡测试仍然不强。
这是我到目前为止的工作:
avl('Branch'(LeftBranch,RightBranch)) :-
height(LeftBranch,H1),
height(RightBranch,H2),
abs(H1-H2) =< 1.
我基于旧的 stackoverflow 代码中的代码。但它并不适用于所有情况。将包括我的身高代码。在某个地方我犯了一个错误,我确定在哪里可以找到它。
height(leaf(_),1).
height('Branch'(LeftBranch,RightBranch,H) :-
height(LeftBranch,H1),
height(RightBranch,H2),
H is max(H1,H2)+1.
为什么我的代码不评估某些树?
这是我基于平衡树测试的线程,我确实尝试过他在评论中发布的树,但我失败了,有什么想法吗?