就是对二叉树及其子树,交换左右子树。
这种就是先序遍历的变种。
递归版本:
void mirror(struct Node* root)
{
if(root==NULL)
{
return ;
}
swap(&root->left, &root->right);
mirror(root->left);
mirror(root->right);
return ;
}
所以非递归可以用栈轻松模拟:
void mirror(struct Node* root)
{
stack<Node*> stk;
stk.push_back(root);
while(!stk.empty())
{
Node* ptr = stk.pop();
if(ptr==NULL)
{
continue;
}
swap(&root->left, *root->right);
stk.push_back(root->left);
stk.push_back(root->right);
}
return ;
}