翻转一棵二叉树。
C++:递归:
TreeNode* invertTree(TreeNode* root)
{
if(root!=NULL)
{
TreeNode* tmp=root->left;
root->left=root->right;
root->right=tmp;
invertTree(root->left);
invertTree(root->right);
}
return root;
}
非递归:
TreeNode* invertTree(TreeNode* root) {
stack<TreeNode*> sk;
sk.push(root);
while(!sk.empty()){
TreeNode* p=sk.top();
sk.pop();
if(p){
sk.push(p->left);
sk.push(p->right);
std::swap(p->left,p->right);
}
}
return root;
}