交换二叉树的左右子树C语言完整代码
时间: 2024-09-21 18:12:41 浏览: 50
在C语言中,交换二叉树的左右子树通常涉及到结构体定义、函数实现以及递归遍历节点的过程。首先,我们需要定义一个表示二叉树节点的结构:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左子节点指针
struct TreeNode *right; // 右子节点指针
} TreeNode;
```
接下来是一个用于交换左右子树的辅助函数,它接收一个指向当前节点的指针作为输入,并递归地处理左子树和右子树:
```c
void swapTreeNodes(TreeNode **node) {
if (*node != NULL) { // 非空节点
TreeNode *temp = (*node)->left; // 保存左子节点
(*node)->left = (*node)->right; // 交换左右子节点
(*node)->right = temp; // 更新右子节点为之前保存的左子节点
// 递归处理左子树和右子树
swapTreeNodes(&(*node)->left);
swapTreeNodes(&(*node)->right);
}
}
```
最后,你可以通过创建一个二叉树实例并调用这个函数来进行整个树的左右子树交换:
```c
// 示例主函数
int main() {
TreeNode *root = // 初始化你的二叉树
swapTreeNodes(&root); // 调用函数交换根节点的左右子树
// 其他树操作...
return 0;
}
```
阅读全文