//求二叉树中结点最大值和结点最小值之差
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
int Max,Min;
typedef struct BiTNode
{
int data;
struct BiTNode* lchild,* rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
int data;
scanf("%d",&data);
if(data==0)
*T=NULL;
else
{
*T=(BiTree)malloc(sizeof(BiTNode));
if(!*T)
exit(1);
(*T)->data=data; //生成根结点
CreateBiTree(&(*T)->lchild);//构造左子树
CreateBiTree(&(*T)->rchild);//构造右子树
}
}
void Find(BiTree T)
{
if(T==NULL)
return;
else
{
if(T->data>Max)
Max=T->data;
if(T->data<Min)
Min=T->data;
Find(T->lchild);
Find(T->rchild);
}
}
void main()
{
BiTree T;
CreateBiTree(&T);
if(T==NULL)
{
printf("二叉树为空!");
exit(1);
}
else
{
Max=Min=T->data;
}
Find(T);
printf("最大结点值和最小结点之差绝对值为%d\n",abs(Max-Min));
}
//前序输入数据