我正在尝试定义一棵树,该树在每个节点中都有两个值。一个表示节点的值,第二个表示与叶的距离。

data Tree2 a b = Nil 0  | T (Tree2 a b) (a b) (Tree2 a b) deriving (Eq,Ord,Show,Read)

定义正确吗? “Nil 0”有意义吗?我想说的是,如果该值不在树中,则距离为0。

最佳答案

我不这么认为。在Nil树上,您可以说“停在这里,没有叶子了”,因此无需在此处添加数据,您只能说:

data Tree2 a b = Nil | T (Tree2 a Int) a Int (Tree2 a Int)

并在每次创建节点时计算右侧的距离。
getDistance :: Tree2 a Int -> Int
getDistance Nil              = 0
getDistance (T _ _ n _) = n

关于haskell - Haskell-在每个节点中都有两个变量的树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43958239/

10-11 15:34