我知道有很多关于定义二叉树以检查某些东西是否是二叉树的问题,但我找不到一个在"相反的方向"处理这个问题的线程.
为什么二进制树的定义在被称为"es_arbol(X)"时不会返回所有可能的二叉树?详细解释并尝试实现一个返回所有可能的二叉树结构的不同定义.
好吧,所以基本上我被困在一个任务的这一部分.在定义我的二叉树验证函数后,我注意到当没有参数调用它只返回通过它们的右节点"增长"的树,或者至少是如何我解释swi-prolog的输出.我没有得到的是,假设我的定义是正确的,Prolog应该能够以两种方式构建它们.如果没有,我想如果有人能指出我正确的工作方向找出二叉树的更一般的定义,或者解释为什么我的定义不够.
这是我的定义:
es_arbol(nil).
es_arbol(arbol(_,I,D)) :- es_arbol(I), es_arbol(D).
Run Code Online (Sandbox Code Playgroud) 我会说到这一点,我有这个:
ocurrencias = [('quiero', 1), ('aprender', 1), ('a', 1), ('programar', 1), ('en', 1), ('invierno', 2), ('hace', 1), ('frio', 1), ('este', 1)]
Run Code Online (Sandbox Code Playgroud)
我想通过元组的第二个值然后通过它们的字符串值对它进行排序,然后打印每个元素来获取:
output:invierno 2
a 1
aprender 1
en 1
este 1
frio 1
hace 1
programar 1
quiero 1
Run Code Online (Sandbox Code Playgroud)
不知道我是否说得足够清楚,但我不是很精通英语,所以请原谅我.
提前致谢