226. Invert Binary Tree - cocoder39/coco39_LC GitHub Wiki
dfs
O(n) time and O(height) space
TreeNode* invertTree(TreeNode* root) {
if(! root) {
return root;
}
TreeNode* left = invertTree(root->right);
TreeNode* right = invertTree(root->left);
root->left = left;
root->right = right;
return root;
}
bfs
O(n) time and O(width) space
TreeNode* invertTree(TreeNode* root) {
if (! root) {
return nullptr;
}
queue<TreeNode*> q;
q.push(root);
while (! q.empty()) {
TreeNode* node = q.front();
q.pop();
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
swap(node->left, node->right);
}
return root;
}