#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node
{
int data;
struct Node* left;
struct Node* right;
}Node;
Node* create(int data)
{
Node* newnode = (Node*)malloc(sizeof(Node));
if (newnode == NULL)
{
perror("error");
exit(1);
}
newnode->data = data;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
Node* Create_Node(Node* root, int data)
{
if (root == NULL)
{
return create(data);
}
else if (data < root->data)
{
root->left = Create_Node(root->left, data);
}
else if (data > root->data)
{
root->right = Create_Node(root->right, data);
}
return root;
}
void printNode(Node* root)
{
if (root!=NULL)
{
printNode(root->left);
printf("%d ", root->data);
printNode(root->right);
}
}
void changeLR(Node* root)
{
if (root->left == NULL && root->right == NULL)
{
return;
}
else
{
Node* temp = root->left;
root->left = root->right;
root->right = temp;
}
changeLR(root->left);
changeLR(root->right);
}
void freeNode(Node* root)
{
if (root!=NULL)
{
free(root->left);
free(root->right);
free(root);
}
}
int main()
{
Node* tree1 = NULL;
tree1 = Create_Node(tree1, 50);
Create_Node(tree1, 30);
Create_Node(tree1, 20);
Create_Node(tree1, 40);
Create_Node(tree1, 70);
Create_Node(tree1, 60);
Create_Node(tree1, 80);
printf("交换前\n");
printNode(tree1);
printf("\n");
printf("交换后\n");
changeLR(tree1);
printNode(tree1);
freeNode(tree1);
return 0;
}
