题意:给你一颗二叉树,让你将这棵树反转。
思路:可以使用递归与非递归两种方式,没什么好说的。。。
递归:
class Solution{
public:
TreeNode *invertTree(TreeNode *root){
if(root == NULL)
return NULL;
TreeNode *saveLeft = root->left;
root->left = invertTree(root->right);
root->right = invertTree(saveLeft);
return root;
}
};
非递归:
class Solution
{
public:
TreeNode *invertTree(TreeNode *root){
if(root == NULL)
return NULL;
queue<TreeNode *> Q;
Q.push(root);
while(!Q.empty()){
TreeNode *curNode = Q.front(); Q.pop();
TreeNode *saveLeft = curNode->left;
curNode->left = curNode->right;
curNode->right = saveLeft;
if(curNode->left != NULL)
Q.push(curNode->left);
if(curNode->right != NULL)
Q.push(curNode->right);
}
return root;
}
};