求二叉树的镜像的c++代码
时间: 2024-08-13 15:07:08 浏览: 44
C++基于递归和非递归算法求二叉树镜像的方法
5星 · 资源好评率100%
在C++中,你可以使用递归的方式来实现二叉树的镜像。下面是一个简单的示例,展示了如何将给定的二叉树转换为其镜像:
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 递归方法,镜像二叉树
TreeNode* mirrorTree(TreeNode* root) {
if (root == NULL) {
return NULL;
}
// 先交换左右子树
TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
// 再递归镜像左右子树
root->left = mirrorTree(root->left);
root->right = mirrorTree(root->right);
return root;
}
int main() {
// 创建一个示例二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 镜像二叉树
root = mirrorTree(root);
// 打印镜像后的树
inOrderTraversal(root); // 假设inOrderTraversal是一个用于中序遍历的函数
return 0;
}
// 假设你有一个inOrderTraversal函数来进行中序遍历并打印节点值
void inOrderTraversal(TreeNode* node) {
if (node != NULL) {
inOrderTraversal(node->left);
cout << node->val << " ";
inOrderTraversal(node->right);
}
}
阅读全文