Invert Binary Tree
Understand and solve the interview question "Invert Binary Tree".
We'll cover the following...
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 |
---|---|