题目描述:
方法1:前序遍历,只不过把读取数字改为交换左右孩子(递归)
class Solution {
public:
void reverse(TreeNode* root){
if(!root) return;
swap(root->left,root->right);
reverse(root->left);
reverse(root->right);
}
TreeNode* invertTree(TreeNode* root) {
reverse(root);
return root;
}
};
方法2:非递归
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
stack<TreeNode*> stk;
if(!root) return root;
stk.push(root);
while(!stk.empty()){
TreeNode* temp = stk.top();
stk.pop();
swap(temp->left,temp->right);
if(temp->left) stk.push(temp->left);
if(temp->right) stk.push(temp->right);
}
return root;
}
};