递归
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr)
return 0;
TreeNode* p = root->left;
TreeNode* q = root->right;
root->right = p;
root->left = q;
invertTree(root->right);
invertTree(root->left);
return root;
}
};
用栈来实现
先进后出
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr)
return nullptr;
stack<TreeNode*> stack;
stack.push(root);
while(!stack.empty())
{
TreeNode* node = stack.top();
stack.pop();
//取出栈顶元素
//放入栈
if(node->right != nullptr)
stack.push(node->right);
if(node->left != nullptr)
stack.push(node->left);
TreeNode* tmp = node->left;
node->left = node->right;
node->right = tmp;
}
return root;
}
};