Invert Binary Tree

Understand and solve the interview question "Invert Binary Tree".

Description

In this lesson, your task is to invert a given binary tree, T.

Let’s look at an example below:

Coding exercise

main.cpp
TreeNode.h
#include "TreeNode.h"
TreeNode* invertTree(TreeNode* root) {
return root;
}
Invert binary tree

Solution

We can solve this problem using depth-first search (DFS).

The inverse of an empty tree is the empty tree. To invert tree T with root and subtrees left and right, we keep root the same and invert the right and left subtrees.

Let’s review the implementation below:

main.cpp
TreeNode.h
TreeNode* invertTree(TreeNode* root) {
if (root == nullptr) {
return root;
}
TreeNode* right = invertTree(root->right);
TreeNode* left = invertTree(root->left);
root->left = right;
root->right = left;
return root;
}
int main(){
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
auto res = invertTree(root);
print(root);
return 0;
}
Invert binary tree

Complexity measures

Time complexity Space complexity
O(n)O(n)
...