【发布时间】:2012-08-29 23:46:11
【问题描述】:
我正在尝试测试一棵树是否是 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.
为什么我的代码没有针对某些树进行评估?
这是我基于平衡树测试的线程,我确实尝试过他在 cmets 中发布的树,但我失败了,有什么想法吗?
【问题讨论】:
标签: tree prolog avl-tree balance tree-balancing