如何解决在递归数据类型如 TREE中实现公共属性
在实现像 TREE 这样的递归数据结构时,我需要每个 TREE 一个公共属性,我想知道如何实现它:
解决方法
一棵树有一个独特的根节点,可用于存储与整棵树相关的信息,而不是与特定节点相关的信息。为了检索此信息,应该有可能从树的任何其他节点到达根节点。一种可能的解决方案是拥有一个特征 parent
,它将返回指定节点的父节点(或 Current
为根)。那么,获取根节点的特征就可以是这样的
root: TREE
-- The root of the tree.
local
p: TREE
do
from
Result := Current
p := parent
until
Result = p -- `Result = Result.parent` when `Result` is root.
loop
Result := p
p := p. parent
end
ensure
Result.parent = Result -- `Result` has no other parent.
end
然后可以从带有 n
的任意树节点 n.root.my_attribute
中检索特定于树的属性值。
编辑:
另一种可能性是拥有一个带有所需数据的专用 CELL
,树中的所有节点都只是引用这个单元格。好处是不需要对父节点的引用,并且可以立即访问数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。