镜面反转通常指的是将二叉树的所有非叶结点的左右孩子对换。下面是一个使用递归方法实现二叉树镜面反转的示例代码:
```c++
include using namespace std; // 定义二叉树节点结构体 struct TreeNode { char data; TreeNode *leftChild, *rightChild; TreeNode(char val) : data(val), leftChild(NULL), rightChild(NULL) {} }; // 递归函数,用于镜像反转二叉树 void mirrorTree(TreeNode* node) { if (node == NULL) { return; } // 交换左右子节点 TreeNode* temp = node->leftChild; node->leftChild = node->rightChild; node->rightChild = temp; // 递归处理左右子树 mirrorTree(node->leftChild); mirrorTree(node->rightChild); } // 辅助函数,用于前序遍历二叉树并输出节点值 void preOrderTraversal(TreeNode* node) { if (node == NULL) { return; } cout << node->data << " "; preOrderTraversal(node->leftChild); preOrderTraversal(node->rightChild); } int main() { // 创建一个示例二叉树 TreeNode* root = new TreeNode('A'); root->leftChild = new TreeNode('B'); root->rightChild = new TreeNode('C'); root->leftChild->leftChild = new TreeNode('D'); root->leftChild->rightChild = new TreeNode('E'); root->rightChild->leftChild = new TreeNode('F'); root->rightChild->rightChild = new TreeNode('G'); cout << "原始二叉树的前序遍历: "; preOrderTraversal(root); cout << endl; // 镜像反转二叉树 mirrorTree(root); cout << "镜像反转后的二叉树的前序遍历: "; preOrderTraversal(root); cout << endl; return 0; } ``` 在这个示例中,我们首先定义了一个二叉树节点的结构体`TreeNode`,然后实现了一个递归函数`mirrorTree`来交换每个非叶节点的左右子节点。最后,我们使用前序遍历函数`preOrderTraversal`来输出原始二叉树和镜像反转后的二叉树的前序遍历结果。 请注意,这个示例是针对二叉树的,如果你需要对其他类型的数据结构进行镜面反转,你需要根据具体的数据结构来编写相应的函数。