用c语言,编写求二叉树左右子树互换的递归算法
时间: 2023-01-11 15:55:36 浏览: 140
二叉树递归C语言版
这是一个求二叉树左右子树互换的递归算法的示例:
```c
void swap_left_right(struct node* root) {
if (root == NULL) return; // 终止条件
// 交换左右子树
struct node* temp = root->left;
root->left = root->right;
root->right = temp;
// 递归地对左右子树进行交换
swap_left_right(root->left);
swap_left_right(root->right);
}
```
在这段代码中,`struct node` 是一个表示二叉树节点的结构体,其中 `left` 和 `right` 分别表示节点的左右子节点。
首先,我们检查当前节点是否为空,如果是,就终止递归。然后交换左右子树,最后对左右子树分别调用递归函数,完成交换。
注意,在这段代码中,我们使用了临时变量来交换左右子树。如果你想使用位运算来交换两个变量的值,可以使用以下代码:
```c
a = a ^ b;
b = a ^ b;
a = a ^ b;
```
希望这能帮到你!
阅读全文