我在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)