It's hard to say exactly how much it'll affect execution speed, but your code isn't written how I'd write it.
First, I'd try to minimize the complexity of the initial condition. I'd only return if root
was a null pointer. Unless the tree is tiny, you're probably going to gain more from a minimal test than from being able to skip a level of recursion.
Second, when you need to swap things, it's better to use swap
to do the job. One of the interesting points of swap
is that it's fairly common to specialize it, so you don't want to call std::swap
directly. Rather, you typically want a using declaration to bring std::swap
into scope, followed by a call to swap
with an unqualified name, so it'll find a versionif the namespace of the objects being swapped contains a swap
in the target namespace (if there is one), that'll be found via ADL, and otherwise lookup will fall back to std::swap
(if there's not).
using std::swap;
swap(root->left, root->right);
invertTree(left);
invertTree(right);
This may or may not improve speed for your particular case, but it certainly can in some cases (often enough that you usually want to follow this basic pattern for swapping items in C++).