用c语言编写上面程序
时间: 2024-10-28 20:07:19 浏览: 6
在C语言中,由于递归和链表操作的特点,我们可以创建一个结构体表示二叉树节点,并使用递归来实现上述的换子树功能。下面是一个简单的示例:
首先,我们定义一个二叉树节点结构:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 用于打印链表方便测试
void printInorder(TreeNode* root);
```
接下来,编写`swapLeftRight`函数:
```c
TreeNode* swapLeftRight(TreeNode* node) {
if (node == NULL) {
return node;
}
TreeNode* temp = node->left; // 保存左子树
node->left = node->right; // 左指针指向右
node->right = temp; // 右指针指向左
// 递归调用自身
node->left = swapLeftRight(node->left); // 交换左子树
node->right = swapLeftRight(node->right); // 交换右子树
return node;
}
```
最后,添加一个打印函数帮助测试:
```c
void printInorder(TreeNode* root) {
if (root != NULL) {
printInorder(root->left);
printf("%d ", root->val);
printInorder(root->right);
}
}
int main() {
// 初始化二叉树
// ...
// 调用swapLeftRight
TreeNode* rootAfterSwap = swapLeftRight(root);
// 打印结果验证
printInorder(rootAfterSwap);
return 0;
}
```
请注意,为了完整地运行这个程序,你需要初始化二叉树的节点和连接,这通常通过用户输入或预先定义好的数据结构完成。在实际项目中,你需要根据具体情况构建树结构。
阅读全文