小编Mac*_*101的帖子

平衡AVL树haskell

我在Haskell中创建了一个AVL树,但我不确定如何平衡树.我可以添加元素,但它们不平衡.比如使用我在[4,2,1,3,6,8]中添加的addList方法将其添加为:

布局:根4(根2(根1空空)(根2空空))(根6空(根8空空))

应打印为:

         4
     2       6
 1       3       8
Run Code Online (Sandbox Code Playgroud)

我想平衡一棵树,但不知道如何正确实现它,这是我的代码到目前为止,任何有关这方面的帮助将是惊人的.

data AVLTree a = Empty | Root a (AVLTree a) (AVLTree a)
    deriving (Eq, Ord, Show)
leaf a = Root a Empty Empty

addNode :: Integral a => a -> AVLTree a -> AVLTree a
addNode a Empty = leaf a
addNode x (Root a left right)
  | x > a = Root a left (addNode x right)
  | x < a = Root a (addNode x left) right
  | …
Run Code Online (Sandbox Code Playgroud)

haskell avl-tree

5
推荐指数
1
解决办法
1920
查看次数

标签 统计

avl-tree ×1

haskell ×1