https://leetcode.com/problems/invert-binary-tree/
트리를 반전 시킨다.
recursive
void Invert(TreeNode* node){
if(node == NULL) return;
TreeNode* tempNode;
tempNode = node->left;
node->left = node->right;
node->right = tempNode;
Invert(node->left);
Invert(node->right);
}
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == NULL) return NULL;
Invert(root);
return root;
}
};
iterative
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == NULL) return NULL;
stack<TreeNode*> treeStack;
treeStack.push(root);
while(!treeStack.empty()){
TreeNode* curNode = treeStack.top();
treeStack.pop();
if(curNode == NULL) continue;
TreeNode* tempNode;
tempNode = curNode->left;
curNode->left = curNode->right;
curNode->right = tempNode;
treeStack.push(curNode->left);
treeStack.push(curNode->right);
}
return root;
}
};