226. Invert Binary Tree
Invert a binary tree.
4 / \ 2 7 / \ / \ 1 3 6 9to
4 / \ 7 2 / \ / \ 9 6 3 1Trivia:
This problem was inspired by this original tweet by Max Howell:
递归的方法:
代码一、
TreeNode* invertTree(TreeNode* root) {
if(root)
{
invertTree(root->left);
invertTree(root->right);
swap(root->left,root->right);
}
return root;
}
代码二、
TreeNode* invertTree(TreeNode* root) {
if(root)
{
invertTree(root->left);
invertTree(root->right);
swap(root->left,root->right);
}
return root;
}
非递归的方法:
代码一:DFS,使用栈来实现
TreeNode* invertTree(TreeNode* root) {
stack<TreeNode*> stk;
stk.push(root);
while(!stk.empty())
{
TreeNode* temp = stk.top();
stk.pop();
if(temp)
{
swap(temp->left,temp->right);//先将这两个节点交换,然后再将这两个节点压入栈
stk.push(temp->left);
stk.push(temp->right);
}
}
return root;
}
代码二:使用队列实现,BFS
TreeNode* invertTree(TreeNode* root) {
queue<TreeNode*> que;
que.push(root);
while(!que.empty())
{
TreeNode* temp = que.front();
que.pop();
if(temp)
{
swap(temp->left,temp->right);
que.push(temp->left);
que.push(temp->right);
}
}
return root;
}