learning to code a BST