private vor BrišiMin(vor vor) { if (vor.levo == null) { return(null); } if ((vor.levo != null && vor.levo.levo != null) && (!vor.levo.crven && !vor.levo.levo.crven)) { vor = SpojiLevo(vor); } vor.levo = BrišiMin(vor.levo); // provera uslova: if ((vor.desno != null && vor.desno.crven) && (vor.levo == null || !vor.levo.crven)) { vor = vor.RotirajLevo(); } if ((vor.levo != null && vor.levo.crven) && (vor.levo.levo != null && vor.levo.levo.crven)) { vor = vor.RotirajDesno(); } if ((vor.levo != null && vor.levo.crven) && (vor.desno != null && vor.desno.crven)) { vor.PromeniBoje(); } return(vor); }
private vor SpojiLevo(vor vor) { vor.PromeniBoje(); if (vor.desno != null && vor.desno.levo != null && vor.desno.levo.crven) { // Dva crvena čvora za redom vor.desno = vor.desno.RotirajDesno(); vor = vor.RotirajLevo(); vor.PromeniBoje(); } return(vor); }
private vor DodajČvor(vor vor, int noviKljuč, object noviElement) { if (vor == null) { return(new vor(noviKljuč, noviElement) { crven = true }); } if (vor.ključ == noviKljuč) { vor.obj = noviElement; } else { if (vor.ključ <= noviKljuč) { vor.desno = DodajČvor(vor.desno, noviKljuč, noviElement); } else { vor.levo = DodajČvor(vor.levo, noviKljuč, noviElement); } } // provera uslova: if ((vor.desno != null && vor.desno.crven) && (vor.levo == null || !vor.levo.crven)) { vor = vor.RotirajLevo(); } if ((vor.levo != null && vor.levo.crven) && (vor.levo.levo != null && vor.levo.levo.crven)) { vor = vor.RotirajDesno(); } if ((vor.levo != null && vor.levo.crven) && (vor.desno != null && vor.desno.crven)) { vor.PromeniBoje(); } return(vor); }
private vor BrišiČvor(vor vor, int ključ, out bool uspešnaOperacija) { if (vor == null) { uspešnaOperacija = false; return(null); } if (vor.ključ > ključ) { if ((vor.levo != null && vor.levo.levo != null) && (!vor.levo.crven && !vor.levo.levo.crven)) { vor = SpojiLevo(vor); } vor.levo = BrišiČvor(vor.levo, ključ, out uspešnaOperacija); } else { if (vor.levo != null && vor.levo.crven) { vor = vor.RotirajDesno(); } if (ključ == vor.ključ && vor.desno == null) { uspešnaOperacija = true; return(null); } if ((vor.desno != null && vor.desno.levo != null) && !vor.desno.crven && !vor.desno.levo.crven) { vor = SpojiDesno(vor); } if (vor.ključ == ključ) { vor pom = Min(vor.desno); vor.ključ = pom.ključ; vor.obj = pom.obj; vor.desno = BrišiMin(vor.desno); uspešnaOperacija = true; } else { vor.desno = BrišiČvor(vor.desno, ključ, out uspešnaOperacija); } } // provera uslova: if (vor != null) { if ((vor.desno != null && vor.desno.crven) && (vor.levo == null || !vor.levo.crven)) { vor = vor.RotirajLevo(); } if ((vor.levo != null && vor.levo.crven) && (vor.levo.levo != null && vor.levo.levo.crven)) { vor = vor.RotirajDesno(); } if ((vor.levo != null && vor.levo.crven) && (vor.desno != null && vor.desno.crven)) { vor.PromeniBoje(); } } return(vor); }