Пока я все еще пытаюсь найти решение для этого вопроса, у меня есть еще один, который может быть проще.Ниже приведена функция вставки реализации красно-черного дерева Окасаки.То, что я хочу сделать, это сохранить данные несортированными при вставке в дерево.Таким образом, данные всегда идут к самому левому / самому нижнему листу каждый раз, когда я вставляю.Нет необходимости сравнивать для x y или x == y.Сначала это кажется довольно простым, просто удалив эти охранники и сделав только: ins s @ (T color ayb) = баланс цвета (ins a) y b.Поведение кажется таким, что дерево остается сбалансированным, но окраска становится немного испорченной.И в конечном итоге это влияет на будущие вставки. Есть идеи, как этого достичь?Я думаю, что это может стать первым шагом к моему предыдущему вопросу.Я только начал играть с Haskell, так что я не совсем понял это правильно.Большое спасибо.
insertSet x s = T B a y b
where ins E = T R E x E
ins s@(T color a y b) =
if x < y then balance color (ins a) y b
else if x > y then balance color a y (ins b)
else s
['d','a','s','f'] s
/\
a f
/
d (unsorted tree)