1. Create the binary tree, instead of filling a binary tree -- because in real life, an "empty binary tree" means that it doesn't exist. No one encounters a problem of having a binary tree that needs filling.
2. Even harder homework, create the binary tree in a balanced manner.
3. Even harder. Do problem 2 (create balance), while you are filling it.... meaning one pass, create while transfer data from array.
4. Even harder. Do problem 3 (create balance while filling) from an unsorted array... meaning add sorting to the one pass.