二叉树创建,查找,最大值 ,最小值
#include<stdio.h>
#include<stdlib.h>
typedef struct binTree{
int data;
struct binTree* left;
struct binTree* right;
}BT;
void creatTree(BT* &tree)
{
int a;
scanf_s("%d",&a);
if (a == -1)
{
tree = NULL;
}
else
{tree = (BT*)malloc(sizeof(BT));
if (!tree) exit(-1);
tree->data = a;
creatTree(tree->left);
creatTree(tree->right);
}
}
BT* BinSearch(int key, BT* tree)
{
if ( (!tree) || key == tree->data)
{
return tree;
}
else if (key > tree->data)
{
return BinSearch(key, tree->right);
}
else
{
return BinSearch(key, tree->left);
}
}
BT* Findmax(BT *tree)
{
if (!tree)
{
return NULL;
}
else if (! tree ->left)
{
return tree;
}
else
{
return Findmax(tree->left);
}
}
BT* Findmin(BT *tree)
{
if (tree)
while (tree->right) tree = tree->right;
return tree;
}
void main()
{
BT* tree;
BT *p;
creatTree(tree);
p = BinSearch(2333,tree);
printf("%d",p->data);
p = Findmax(tree);
printf("%d\n", p->data);
p = Findmin(tree);
printf("%d\n", p->data);
}