序言中的树木



我正在研究二进制树。

我知道结构,但我在幻灯片中不了解此代码:

binary_tree(void).
binary_tree(tree(_Element,Left,Right)) :-
  binary_tree(Left), binary_tree(Right).

这需要识别树结构。

但是" void"表示?

我尝试了此查询

?- binary_tree(a).
false.

假设a是树的一个节点。

我正在遵循此资源以进行理解:

https://sites.google.com/site/prologsite/prolog-problems/4

,但与我的幻灯片不同。

任何人都可以澄清一下吗?

void是一个原子。它不能假设任何值(自身除外)。此外,根据您的谓词定义,a也不是有效的树。具有a的树是其唯一的节点,将由复合术语tree(a,void,void)表示:

| ?- binary_tree(tree(a,void,void)).
yes

作为另一个示例,带有节点a..g的平衡树将由该术语表示(仅用于可读性为书面):

   tree(a,
       tree(b,
           tree(d,void,void),
           tree(e,void,void)
       ),
       tree(c,
           tree(f,void,void),
           tree(g,void,void)
       )
    )

您可以使用binary_tree /1谓词再次验证该术语是一棵树:

| ?- binary_tree(tree(a,tree(b,tree(d,void,void),tree(e,void,void)),tree(c,tree(f,void,void),tree(g,void,void)))).
yes

相关内容

  • 没有找到相关文章

最新更新