#include<iostream>
#include<stdlib.h>
struct Node
{
int value;
Node *left;
Node *right;
};
struct Tree
{
Node *tree;
};
void creat(Tree *p, int data)
{
Node *node = (Node *) malloc (sizeof(Node));
node->left = NULL;
node->right = NULL;
node->value = data;
if(p->tree == NULL)
{
p->tree = node;
std::cout << p->tree->value << std::endl;
}
else
{
Node *temp;
temp = p->tree;
while(temp != NULL)
{
if(data > temp->value)
{
if( temp->right == NULL)
{
temp->right = node;
return;
}
else
{
temp = temp->right;
}
}
else
{
if(temp->left == NULL)
{
temp->left = node;
return;
}
else
{
temp = temp->left;
}
}
}
}
}
void midorder(Node *mtree)
{
if(mtree != NULL)
{
midorder(mtree->left);
std::cout << mtree->value << " ";
midorder(mtree->right);
}
}
void freetree(Node *mtree)
{
while(mtree->left != NULL )
{
Node *p;
p = mtree->left;
free(mtree->left);
mtree = p->left;
}
while(mtree->right != NULL )
{
Node *p;
p = mtree->right;
free(mtree->right);
mtree = p->right;
}
}
int main()
{
Tree p;
p.tree = NULL;
int a[] = { 1, 3, 2, 5, 7, 8, 4, 9, 19, 11 };
for(int i = 0; i < 10; i++)
{
creat(&p, a[i]);
}
midorder(p.tree);
freetree(p.tree);
}
线索二叉树
最新推荐文章于 2021-03-12 11:51:10 发布