#include<stdio.h>
#include<stdlib.h>
typedef struct _Node
{
int data;
struct _Node* left;
struct _Node* right;
}Node;
typedef struct _Tree
{
Node* root;
}Tree;
void insert(Tree* tree,int data)
{
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->left = NULL;
node->right = NULL;
if (tree->root == NULL)
{
tree->root = node;
}
else
{
Node* temp = tree->root;
while (temp!=NULL)
{
if (data<temp->data)
{
if (temp->left == NULL)
{
temp->left = node;
return;
}
else
{
temp = temp->left;
}
}
else
{
if (temp->right == NULL)
{
temp->right = node;
return;
}
else
{
temp = temp->right;
}
}
}
}
}
void travse(Node* node)
{
if (node!=NULL)
{
travse(node->left);
printf("%d ", node->data);
travse(node->right);
}
}
void distory_tree(Node* node)
{
if (node!=NULL)
{
distory_tree(node->left);
distory_tree(node->right);
printf("free data:%d \n", node->data);
free(node);
node = NULL;
}
}
int main()
{
int n;
Tree tree;
tree.root = NULL;
printf("请输入要添加数据的个数:\n");
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
int temp;
scanf("%d", &temp);
insert(&tree,temp);
}
printf("遍历输出:");
travse(tree.root);
putchar('\n');
distory_tree(tree.root);
system("pause");
return 0;
}