implement bst, add test cases, best/worst cases