计算Prolog上二叉树中的节点数量?

BIL*_*ILL 2 binary-tree prolog

我有一些代码

tree1(tree(1,
            tree(2,
                tree(3,nil,nil),
                tree(4,nil,nil)),
            tree(5,
                tree(6,nil,nil),
                tree(7,nil,nil))
        )
    ).
rbt_count_nodes(e,0):-!.
rbt_count_nodes(t(_,L,R),N):-
    rbt_count_nodes(L,NL),
    rbt_count_nodes(R,NR),
    N=NL+NR+1.

?-tree1(T),rbt_count_nodes(T,N),write(N).
Run Code Online (Sandbox Code Playgroud)

但目标总是回归号码为什么?

m09*_*m09 5

rbt_count_nodes(t(_,L,R),N)
Run Code Online (Sandbox Code Playgroud)

应该成为

rbt_count_nodes(tree(_,L,R),N)
Run Code Online (Sandbox Code Playgroud)

N=NL+NR+1
Run Code Online (Sandbox Code Playgroud)

应该成为

N is NL + NR + 1
Run Code Online (Sandbox Code Playgroud)

((=)/2用于执行统一,(is)/2执行算术).

rbt_count_nodes(e,0):-!.
Run Code Online (Sandbox Code Playgroud)

应该成为

rbt_count_nodes(nil,0).
Run Code Online (Sandbox Code Playgroud)

在这三次编辑之后它应该没问题,虽然我无法测试,所以我可能被证明是错的.