用c语言实现以二叉链表作为二叉树的存储结构,编写算法实现交换二叉树每个结点的左孩子和右孩子。
时间: 2023-11-14 12:05:45 浏览: 131
以下是用C语言实现的交换二叉树节点左右孩子的算法:
```c
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *left;
struct node *right;
};
struct node* createNode(int data)
{
struct node* newNode = (struct node*) malloc(sizeof(struct node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
void swap(struct node* node)
{
if(node == NULL)
{
return;
}
else
{
struct node* temp = node->left;
node->left = node->right;
node->right = temp;
swap(node->left);
swap(node->right);
}
}
void inorderTraversal(struct node* root)
{
if(root == NULL)
{
return;
}
inorderTraversal(root->left);
printf("%d -> ", root->data);
inorderTraversal(root->right);
}
int main()
{
struct node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
root->right->left = createNode(6);
root->right->right = createNode(7);
printf("Inorder traversal before swapping:\n");
inorderTraversal(root);
swap(root);
printf("\nInorder traversal after swapping:\n");
inorderTraversal(root);
return 0;
}
```
此算法首先创建了一个二叉树,然后通过递归的方式遍历二叉树,将每个节点的左右孩子进行交换。最后再次遍历二叉树,输出结果。
阅读全文