Haskell - 每个节点中有两个变量的树

Muf*_*ffy 2 tree haskell

我正在尝试定义一个树,每个节点中有两个值.一个表示节点的值,第二个表示距叶子的距离.

data Tree2 a b = Nil 0  | T (Tree2 a b) (a b) (Tree2 a b) deriving (Eq,Ord,Show,Read)
Run Code Online (Sandbox Code Playgroud)

定义是否正确?"Nil 0"有意义吗?我想说,如果值不在树中而不是距离为0.

4ca*_*tle 6

定义在每个节点包含两个值的树是不必要的,因为您可以只使用在每个节点包含一个值的树,但它包含两个值的元组.

例如:

data Tree a = Nil | Node (Tree a) a (Tree a) deriving (Eq, Ord, Show, Read)

type Tree2 a b = Tree (a,b)
Run Code Online (Sandbox Code Playgroud)

现在你已经拥有了Tree2它的所有特性Tree,但需要2个类型参数.

使用它的函数的一个例子是:

getDistance :: (Num b) => Tree2 a b -> b
getDistance Nil              = 0
getDistance (Node _ (_,x) _) = x
Run Code Online (Sandbox Code Playgroud)