我认为第一种的pushup已经足够了,因为当tree[tree[u].ls].max_num==tree[tree[u].rs].max_num时候ls的id(救济粮编号)总是小于rs的,可以直接赋值成ls,但在第二个点过不了,求大佬解惑
这是tps95的pushup:
void pushup(int u){
if(tree[tree[u].ls].max_num>=tree[tree[u].rs].max_num){
tree[u].max_num=tree[tree[u].ls].max_num;
tree[u].max_id=tree[tree[u].ls].max_id;
}else{
tree[u].max_num=tree[tree[u].rs].max_num;
tree[u].max_id=tree[tree[u].rs].max_id;
}
这是tps100的pushup:
void pushup(int u){
if(tree[tree[u].ls].max_num>tree[tree[u].rs].max_num){
tree[u].max_num=tree[tree[u].ls].max_num;
tree[u].max_id=tree[tree[u].ls].max_id;
}else if(tree[tree[u].ls].max_num<tree[tree[u].rs].max_num){
tree[u].max_num=tree[tree[u].rs].max_num;
tree[u].max_id=tree[tree[u].rs].max_id;
}else if(tree[tree[u].ls].max_id<tree[tree[u].rs].max_id){
tree[u].max_num=tree[tree[u].ls].max_num;
tree[u].max_id=tree[tree[u].ls].max_id;
}else{
tree[u].max_num=tree[tree[u].rs].max_num;
tree[u].max_id=tree[tree[u].rs].max_id;
}
}