Given the root of a BST and a value to insert, insert the value into the BST and return the root. The new value does not exist in the original BST.
Recursively traverse the BST. Go left if val < root.val, right if val > root.val. When reaching a null node, create and return a new node.
- If root == null: return new TreeNode(val).
- If val < root.val: root.left = insert(root.left, val).
- Else: root.right = insert(root.right, val).
- Return root.
- Time Complexity: O(H)
- Space Complexity: O(H)