adding avl_tree implementation