本题可以用层次遍历的方法(迭代的思想),每次先令左右孩子交换位置(为空也要交换),再令不为空的孩子入队,依此类推。
上代码:
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr)
{
return root;
}
queue<TreeNode*> a;
a.push(root);
TreeNode* cur = root;
TreeNode* temp;
int size;
while(!a.empty())
{
size = a.size();
while(size--)
{
cur = a.front();
a.pop();
temp = cur->left;
cur->left = cur->right;
cur->right = temp;
if(cur->left != nullptr)
{
a.push(cur->left);
}
if(cur->right != nullptr)
{
a.push(cur->right);
}
}
}
return root;
}
};