用c语言实现编程,采用二叉链表存储结构,交换二叉树中每个结点的左孩子和右孩子
时间: 2023-11-13 20:06:17 浏览: 85
可以按照以下步骤来实现:
1. 定义二叉树节点的结构体,包括节点值、左右孩子指针。
```c
typedef struct node {
int data;
struct node* left;
struct node* right;
}Node;
```
2. 实现二叉树的创建函数,可以手动输入节点值来构建二叉树。
```c
Node* createTree() {
int val;
scanf("%d", &val);
if (val == -1) { // 输入-1表示该节点为空
return NULL;
}
Node* root = (Node*)malloc(sizeof(Node));
root->data = val;
root->left = createTree();
root->right = createTree();
return root;
}
```
3. 实现交换左右孩子的函数,采用递归的方式遍历整个二叉树,对于每个节点,交换其左右孩子。
```c
void swap(Node* root) {
if (root == NULL) {
return;
}
Node* temp = root->left;
root->left = root->right;
root->right = temp;
swap(root->left);
swap(root->right);
}
```
4. 完成主函数,调用以上函数并输出交换后的二叉树。
```c
int main() {
Node* root = createTree();
swap(root);
// 输出交换后的二叉树
return 0;
}
```
完整代码如下:
阅读全文