public int najveci(CvorStabla k) { if(k == null) return Integer.MIN_VALUE; return Math.max(k.podatak, Math.max(najveci(k.levo), najveci(k.desno))); } public Max vratiCvor(CvorStabla k,int p,Max max) { if(k == null) return null; if(k.podatak == p) { max.cvor = k; return max; } vratiCvor(k.levo, p, max); vratiCvor(k.desno, p, max); return max; } public CvorStabla vratiCvor(CvorStabla k,int p) { return vratiCvor(k, p, new Max()).cvor; } public void zameniKorenINajveci(CvorStabla k,CvorStabla najveci) { if(k.podatak == najveci.podatak) return; int pom = k.podatak; k.podatak = najveci.podatak; najveci.podatak = pom; } public void heapStablo(CvorStabla k) { if(k == null) return; zameniKorenINajveci(k, vratiCvor(k, najveci(k))); heapStablo(k.levo); heapStablo(k.desno); }