使用Prolog检查树是否为二叉树

使用Prolog检查树是否为二叉树,prolog,Prolog,在我的实现中,二叉树被定义为TreeNode(左、右) 我正在编写一个isBinaryTreeTerm函数来检查这个术语是否是一个二叉树,因为这个术语可以是任何Prolog术语 以下是我的实现: isBinaryTree(nil). isBinaryTree(Tree(_,left,right)) :- isBinaryTree(left), isBinaryTree(right). 但它在以下输入上返回no isBinaryTree(Tree(a, nil, nil)). 当它返回yes时

在我的实现中,二叉树被定义为TreeNode(左、右)

我正在编写一个isBinaryTreeTerm函数来检查这个术语是否是一个二叉树,因为这个术语可以是任何Prolog术语

以下是我的实现:

isBinaryTree(nil).
isBinaryTree(Tree(_,left,right)) :- isBinaryTree(left), isBinaryTree(right).
但它在以下输入上返回no

isBinaryTree(Tree(a, nil, nil)).
当它返回yes时

isBinaryTree(nil)

为什么isBinaryTreeTreea,nil,nil不会在prolog上返回yes?

在prolog中使用大写字母表示变量