【发布时间】:2018-06-01 09:24:13
【问题描述】:
我的教授给了我一个关于 prolog 的练习。鉴于这个目标,我必须构建对应的 234 树:
写(树(1,树(11,树(111,n,n),树(112,树(1121,n,n),n)),树(12,树(121,n,n) ),树(122,n,n), 树(123,n,n),树(124,树(1241,n,n),树(1242,n,n)))))
结果应该是这样的:
你是在问我有什么问题吗?
我研究了什么是234树,但我不明白为什么我所代表的树可以被认为是234树,我看到的是从1到1242的数字。234树应该是这样的吗?
【问题讨论】:
-
仔细查看您的示例树:树术语由节点 ID 组成,例如1 在顶部和子树。例如:节点 11 的子树
tree(11,tree(111,n,n),tree(112,tree(1121,n,n),n))包含两个子树,即节点 111 和 112,而节点 12 的子树tree(12,tree(121,n,n),tree(122,n,n), tree(123,n,n),tree(124,tree(1241,n,n),tree(1242,n,n)))包含四个子树,即节点 121、122、123 和 124 . 下一级,在节点124,有两个子树,节点1241和1242:tree(124,tree(1241,n,n),tree(1242,n,n)) -
另外,我建议将子树保留在列表中。这将使术语树更具可读性,因为它始终具有两个子术语,即节点 id 和列表,并且您可以将这样的术语用于具有任意数量的后继节点的树,因为它们始终包含在列表中。
-
您显示为 Prolog 术语的树似乎具有真正代表某种节点索引(用于说明目的)的值(1、11、12、111 等)而不是节点值。如果它们是值,则树的顺序将不正确,除非您的排序指标不是严格的数字。
-
那么,为什么12在1的左边,11在右边呢?
-
事实是,现在我不明白产生我在第一篇文章中展示的 234 树的标准是什么。
标签: algorithm data-structures tree prolog