如何解决在序言中声明树的好方法?
| 我在序言中使用树(普通树,不限于二叉树)。从我所看到的一小段代码中,尽管在树上定义遍历等很容易,但定义树的实例并不容易。什么是做到这一点的好方法?另外,我应该如何尝试在每个节点中包括单属性值?解决方法
关于您的评论“但问题是整棵树必须排成一行”:事实并非如此。您还可以使用几行来构造树,例如:
tree(Tree) :-
Tree = tree(Root,[Child,Leaf3]).
Child = tree(Node1,[Leaf1,Leaf2]),Leaf1 = tree(Node2,[]),Leaf2 = tree(Node3,Leaf3 = tree(Node4,[]).
,这是作业吗?
表示任意树结构的简单方法恕我直言,是将每个节点表示为类似以下内容的东西:
tree(Data,[ChildNode_1,...,ChildNode_n]).
叶节点如下所示:
tree(Data,[]).
有点专门的二叉树可能看起来像
tree(Data,LeftChild,RightChild).
其中原子nil代表不存在的子节点,因此其叶节点看起来像
tree(Data,nil,nil).
还有一个只有左孩子的节点
tree(Data,nil).
节点数据可以是任何任意结构。也许您希望它成为键/值对:
tree(kvp(Key,Value),ChildNodes).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。