c语言二叉树反转代码
时间: 2024-11-23 18:29:09 浏览: 24
在C语言中,二叉树的反转通常涉及到层次遍历(即先序、中序或后序遍历)的技巧。这里提供一种基于递归的后序遍历方法来反转二叉树:
```c
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 后序遍历并反转节点顺序
void invertTree(TreeNode** root) {
if (*root != NULL) {
// 先翻转左右子树
invertTree(&(*root)->left);
invertTree(&(*root)->right);
// 然后交换当前节点与其父节点的位置
TreeNode* temp = (*root)->left;
(*root)->left = (*root)->right;
(*root)->right = temp;
}
}
// 构建一个简单的例子展示如何使用这个函数
void buildExample() {
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
// ...添加更多节点
// 调用invertTree反转二叉树
invertTree(&root);
// 打印反转后的树(这里省略了打印部分)
}
```
阅读全文