void down(int u){
int t=u;//t存储三个结点中存在的最小的结点的下标,初始化为当前结点u
if (u*2<=siz&&h[u*2]<h[t])t=u*2; // 左子节点存在并且小于当前结点,更新t的下标
if (u*2+1<=siz&&h[u*2 +1]<h[t]) t=u*2+1;//右子节点存在并且小于当前结点,更新t的下标
if (t!=u){//如果t==u意味着不用变动,u就是三个结点中拥有最小值的结点下标,否则交换数值
swap(h[t],h[u]);
down(t); //交换数值后,t这个结点存储原本u的值,u存储存储t的值(三个数中的最小值)。
//u不用调整了,但t情况不明,可能需要调整。直到它比左右子节点都小
}
}