我需要一个树实现,我可以访问树中任何节点的父节点.看看Data.Tree我看到了树的定义:
data Tree a = Node {
rootLabel :: a, -- ^ label value
subForest :: Forest a -- ^ zero or more child trees
}
Run Code Online (Sandbox Code Playgroud)
所以如果我有一个树节点,Tree a我可以访问它的标签及其子节点.但是也可以访问其父节点?是否必须根据我的需求选择不同的实施方案?你会推荐哪个套餐?
如果我没有弄错的话,你所要求的基本上是LYAH关于Zippers的部分.
我不会试图比Miran更好地解释它,但基本的想法是在你穿越树时跟踪你来自哪棵树,以及你正在向下移动的那个树枝.您没有直接在数据结构中跟踪节点的父节点,但是当您遍历树时,所有信息都可用.