• Yeşil düğümler tamamlanmış kelimeleri temsil eder
• Parantez içindeki sayı kelimenin kaç kez eklendiğini gösterir
• Mavi etiketler tamamlanmış kelimeyi gösterir
Zaman Karmaşıklığı:
Alan Karmaşıklığı: O(ALPHABET_SIZE * N * M)
Kullanım Alanları: Otomatik tamamlama, yazım kontrolü, IP routing
Zaman Karmaşıklığı:
Alan Karmaşıklığı: O(n)
Kullanım Alanları: Aralık toplamı, min/max sorguları, lazy propagation
Trie, prefix tree olarak da bilinen, string verilerini verimli bir şekilde saklamak ve araştırmak için kullanılan ağaç benzeri bir veri yapısıdır. Her düğüm bir karakteri temsil eder ve kök düğümden yapraklara doğru giden yol bir string oluşturur.
Trie (Prefix Tree) Veri Yapısı algoritmasının farklı programlama dillerindeki uygulamaları aşağıda verilmiştir. Her örnek, algoritmanın temel akışını açık şekilde gösterecek biçimde sunulmuştur.
1class TrieNode {2 children = new Map(); 3 isEndOfWord = false;4}56class Trie {7 root = new TrieNode();89 insert(word: string): void {10 let node = this.root;11 for (const char of word) {12 if (!node.children.has(char)) {13 node.children.set(char, new TrieNode());14 }15 node = node.children.get(char)!;16 }17 node.isEndOfWord = true;18 }1920 search(word: string): boolean {21 let node = this.root;22 for (const char of word) {23 if (!node.children.has(char)) return false;24 node = node.children.get(char)!;25 }26 return node.isEndOfWord;27 }2829 startsWith(prefix: string): boolean {30 let node = this.root;31 for (const char of prefix) {32 if (!node.children.has(char)) return false;33 node = node.children.get(char)!;34 }35 return true;36 }37}Aşağıya kendi verilerinizi girerek algoritmanın örnek çalışma akışını görebilirsiniz. Virgülle ayrılmış sayılar veya metin değerleri kullanabilirsiniz.
Girilen veri, algoritmanın pseudo kodundaki genel akışa göre örnek bir sonuca dönüştürülür.
En İyi Durum: O(m)
Ortalama Durum: O(m)
En Kötü Durum: O(m)
O(ALPHABET_SIZE * N * M) - Bu algoritmanın karmaşıklığı belirtilmemiş.
Trie (Prefix Tree) Veri Yapısı ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar:
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.
Bu kullanım alanı, algoritmanın benzer problem aileleriyle birlikte incelenmesi için iyi bir başlangıç noktasıdır.