Ну, я не уверен, что это будет полезно через 12 дней после того, как вопрос был задан, но здесь идет.
Чтобы было ясно, я предполагаю, что структура данных имеет форму (ключ списка слева направо), где слева и справа также деревья (или пустые, но это не имеет значения) Если это не так, потребуется разъяснение этого.
Одной из проблем в вашем коде является то, что вы не хотите напрямую добавлять два списка, которые у вас есть, на право. Вы хотите сделать список с ключом одного из них, а затем влево и вправо. Если я правильно читаю, левая функция должна возвращать дерево и, следовательно, работать нормально.
Я бы проверил реализацию rot-r на вашем месте, так как это, по-видимому, основная возможность того, что что-то пойдет не так.