added balanced BST implementation