写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
typedef struct node{
int value;
struct node *lchild;
struct node *rchild;
}binarytree;
void preorder(binarytree *p, int &max, int &min)//先序遍历
{
if (NULL==p)
return;
if(p->value>max)
max=p->value;
if(p->value<min)
min=p->value;
preorder(head->lchild, max, min);
preorder(head->rchild, max, min);
return;
}
int chazhi_max(binarytree *head)//返回最大差值
{
if(NULL==head)
return -1;
int max, min;
max = min = head->value;
preorder(head, max, min);
return max-min;
}