add avl tree implement