求二叉树中相差最大的两个节点的差值绝对值
#include <iostream>
using namespace std;
typedef struct node
{
node *leftnode;
node *rightnode;
int value;
}node;
void getvalue(node *nodes, int *max, int *min, int *value)
{
if(nodes==NULL)
return;
if(*min>nodes->value)
*min=nodes->value;
if(*max<nodes->value)
*max=nodes->value;
*value=*max-*min;
getvalue(nodes->leftnode,max,min,value);
getvalue(nodes->rightnode,max,min,value);
};
node * inittree()
{
node* tree[10];
for(int i=0; i<10; i++)
{
tree[i]=(node *)malloc(sizeof(node));
tree[i]->leftnode=NULL;
tree[i]->rightnode=NULL;
tree[i]->value=i;
}
for(i=0;i<4;i++)
{
tree[i]->leftnode=tree[i*2+1];
tree[i]->rightnode=tree[i*2+2];
}
return tree[0];
};
int main()
{
node *nodes=inittree();
int min=nodes->value;
int max=nodes->value;
int value=0;
getvalue(nodes,&max,&min,&value);
cout<<value<<endl;
return 1;
}