Supponendo tu stia utilizzando un vettore come un albero binario completo e il nodo padre sia l'indice 0, mi sembra che tu non stia rispettando le relazioni padre-figlio. Infatti le relazioni di parentela dovrebbero essere
codice:
left_child(int k) = 2*k+1
right_child(int k) = 2*k+2
//-1 on parent(0)
parent(int k) = round_down((k-1)/2)
//0 on parent(0)
parent(int k) = trunc((k-1)/2)
Tu invece stai utilizzando come relazioni 2k-1 e 2k