二叉树的镜像就是要将左子树调整到右子树的地方
将右子树的位置调整到左子树的位置
首先先序遍历这个数的每个节点,如果遍历到节点有子节点
就交换它的两个子结点,当交换完所有非结点之后,就得到了树的镜像
代码的实现:
#include<iostream>
using namespace std;
struct BinaryTreeNode
{
int _value;
BinaryTreeNode* _left;
BinaryTreeNode* _right;
};
void MirrorRecurisively(BinaryTreeNode* Node)
{
if (Node == NULL || (Node->_left == NULL) && Node->_right)
{
return;
}
BinaryTreeNode *tmp = Node->_left;
Node->_left = Node->_right;
Node->_right = tmp;
if (Node->_left)
{
MirrorRecurisively(Node->_left);
}
if (Node->_right)
{
MirrorRecurisively(Node->_right);
}
}