Prolog中的二叉树计数节点

bbbBB

我建立了具有结构bt(Data,LeftTree,RightTree)的二叉树。

btree(nil).
btree(bt(_,L,R)) :- btree(L), btree(R).

那么我想定义谓词count1Child(Tree,Count),断言Count是树中有一个孩子的节点数。我知道如何计算树中节点的总数。但是不知道只有一个孩子的节点计数。

头发C.
cbt(nil, 0).
cbt(bt(_,L,R), T) :- cbt(L,Nl),cbt(R,Nr),
    ( (L=nil,R\=nil ; L\=nil,R=nil) -> C = 1 ; C = 0 ),
    T is Nl + Nr + C.

但是您在问题中给出的测试树似乎无效:我用

?- cbt(bt(1,bt(2,nil,bt(3,nil,nil)),nil),N).
N = 2.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章