added AVL balancing tree