226_InvertBinaryTree - a920604a/leetcode GitHub Wiki
title: 226. Invert Binary Tree
tags:
- bfs
- backtracking
categories: leetcode
solution
option 1 - backtracking
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(!root) return root;
// post-order
root->left = invertTree(root->left);
root->right = invertTree(root->right);
TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
return root;
}
};
- postorder traverse version
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(!root) return root;
root->left = invertTree(root->left);
root->right = invertTree(root->right);
TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
return root;
}
};
option 2 - bfs
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(!root) return root;
queue<TreeNode * >q;
q.push(root);
while(!q.empty()){
int size = q.size();
while(size-- > 0){
TreeNode *p = q.front();
q.pop();
if(p->left) q.push(p->left);
if(p->right) q.push(p->right);
TreeNode *temp = p->left;
p->left = p->right;
p->right = temp;
}
}
return root;
}
};
analysis
- time complexity
O(n)
- space complexity
O(n)