public List <Kok> getAdayKokler(String giris) { List <Kok> adaylar = new List <Kok>(3); int girisIndex = 0; KokDugumu node = agac.getKokDugumu(); while (girisIndex < giris.Length) { node = node.altDugumGetir(giris[girisIndex]); if (node == null) { break; } if (node.getKok() != null) { // buradaki kodu daha basit ama biraz yavas hale getirdim. if (giris.StartsWith((String)node.getKelime())) { node.tumKokleriEkle(adaylar); } } girisIndex++; } return(adaylar); }
/** * Ağaç üzerinde yürüyerek ASCII toleranslı karşılaştırma ile * kök adaylarını bulur. Rekürsiftir. * * @param dugum : başlangıç düğümü * @param olusan : Yürüme sırasında oluşan kelime (düğümlerin karakter değerlerinden) */ public void yuru(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum.getKok() != null) { if (logger.IsInfoEnabled) { logger.Info("Kok : " + dugum.getKelime()); } if (asciiTolaransliKarsilastir((String)dugum.getKelime(), giris)) { // Aday kok bulundu. dugum.tumKokleriEkle(adaylar); } else { return; } } else { if (asciiTolaransliKarsilastir(tester, giris)) {//TODO böölemi ! idi return; } } int seviye = tester.Length - 1; //TODO böölemi -1 yoktu if (seviye == giris.Length) { return; } // Uygun tüm alt dallarda yürü foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { if (agac.getAlfabe().asciiToleransliKiyasla(altDugum.getHarf(), giris[seviye])) { this.yuru(altDugum, tester); } } } }
/** * Ağaç üzerinde yürüyerek ASCII toleranslı karşılaştırma ile * kök adaylarını bulur. Rekürsiftir. * * @param dugum : başlangıç düğümü * @param olusan : Yürüme sırasında oluşan kelime (düğümlerin karakter değerlerinden) */ public void yuru(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum.getKok() != null) { if (logger.IsInfoEnabled) logger.Info("Kok : " + dugum.getKelime()); if (asciiTolaransliKarsilastir((String) dugum.getKelime(), giris)) { // Aday kok bulundu. dugum.tumKokleriEkle(adaylar); } else { return; } } else { if (asciiTolaransliKarsilastir(tester, giris)) {//TODO böölemi ! idi return; } } int seviye = tester.Length - 1; //TODO böölemi -1 yoktu if(seviye == giris.Length) return; // Uygun tüm alt dallarda yürü foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { if (agac.getAlfabe().asciiToleransliKiyasla(altDugum.getHarf(), giris[seviye])) this.yuru(altDugum, tester); } } }