我正在尝试定义一棵树,该树在每个节点中都有两个值。一个表示节点的值,第二个表示与叶的距离。
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/