/** * Noodi ei ole läpikäymättömissä, asetetaan käsittelyssä oleva Noodi tämän edeltäjäksi ja * lasketaan matka-arvot, sekä lisätään Noodi läpikäymättömiin * * @param kaymattomatNoodit * @param valittuViereinen * @param valittu * @param loppuX * @param loppuY */ private void asetaKaymatonNoodi( AvlPuu kaymattomatNoodit, Noodi valittuViereinen, Noodi valittu, int loppuX, int loppuY) { valittuViereinen.setEdellinenNoodi(valittu); valittuViereinen.setMatkaJaljella(noodit[loppuX][loppuY]); valittuViereinen.setTehtyMatka(valittu); kaymattomatNoodit.insert(valittuViereinen); }
@Override /** Vertailee annettuja Noodeja, palauttaa n1:n ja n2:n erotuksen */ public int compare(Noodi n1, Noodi n2) { return (int) (n1.getMatkaaJaljella() - n2.getMatkaaJaljella()); }
/** * Jos matka käsittelyssä olevan Noodin kautta on lyhyempi kuin Noodiin aiemmin tallennettu matka, * aseta käsittelyssä oleva Noodi edeltäjäksi ja päivitä matkaa * * @param valittuViereinen * @param valittu */ private void asetaUusiLyhinMatka(Noodi valittuViereinen, Noodi valittu) { if (valittuViereinen.getTehtyMatka() > valittuViereinen.laskeTehtyMatka(valittu)) { valittuViereinen.setEdellinenNoodi(valittu); valittuViereinen.setTehtyMatka(valittu); } }