中级农民
- 积分
- 116
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2009-10-2
- 最后登录
- 1970-1-1
|
我自己写的不知道对不对。
binaryTree *compress(binaryTree *root, int *prevdata, binaryTree **prevnode){
if(!root) return NULL;
int threshold =0;
root->left = compress(root->left, prevdata, prevnode);
if(*prevdata == INT_MIN){
*prevdata = root->data;
*prevnode = root;
if(!root->right&&root->data!=mymax)
return NULL;;
}else{
if((*prevnode)->data2<root->data2){
root->data2 = *prevdata;
delete *prevnode;
}
else{
int temp = (*prevnode)->data;
(*prevnode)->data = root->data;
(*prevnode)->data2 = temp;
threshold =1;
}
*prevdata = INT_MIN;
}
root->right = compress(root->right,prevdata,prevnode);
if(threshold == 1 && !root->right) {
return NULL;
}else if(threshold ==1 && root->right)
return root->right;
return root;
}
binaryTree * makecompress(binaryTree *root){
int p = INT_MIN;
int *prevdata = &p;
binaryTree **prevnode = NULL;
prevnode = (binaryTree **)malloc(sizeof(binaryTree *));
root = compress(root, prevdata, prevnode);
return root;
} |
|