avl: use avl_tree first,last and avl_node left,right pointer