because you didn't bother to encapsulate that behaviour in a tree class.
The first time you assign the newly create node, the rest are self-assignments. You may rewrite it as
however, it's too much to ask the developer to note if the tree is or not empty.
So they write the form root = Insert(root, value); which «works in every case». Besides, ¿who doesn't love repetition?
Also, consider that you wrote a `GetNewNode()' function that does what would be expected of a constructor.