I am working on AVL Trees in Scheme. I have a problem with the rotation when the left subtree outweighs the right subtree of the given node. If the balance factor of L is -1, two different rotations are needed. The first rotation is a left rotation with L as the root. The second is a right rotation with P as the root. I did the first one, when comes the second part, i am stuck.
I used this helper function;
(define (avl-fix-helper1 avl)
(cond
((= (balance-factor (bst-left avl)) 1) (right-rotate avl))
((= (balance-factor (bst-left avl)) -1) (left-rotate (bst-left avl))) (else avl)))
There must be something in second condition to rotate the tree clockwise. What should i do ?