İkili ağaçların uygulamaları nelerdir?


323

İkili ağaçların özel uygulamalarının ne olduğunu merak ediyorum. Bazı gerçek örnekler verebilir misiniz?

Yanıtlar:


425

İkili ağaçların performansı hakkında kavga etmek anlamsızdır - bunlar bir veri yapısı değil, hepsi farklı performans özelliklerine sahip bir veri yapıları ailesidir. O doğru olmakla birlikte dengesiz ikili ağaçlar çok daha kötü performans kendini dengeleyen ikili ağaçlar arama için birçok ikili ağaçlar vardır (örneğin ikili denemeden gibi) kendisi için "dengeleme" bir anlamı yoktur.

İkili ağaçların uygulamaları

  • İkili Arama Ağacı - Verilerin sürekli olarak girildiği / çıktığı , birçok dilin kütüphanesindeki ve nesneleri gibi birçok arama uygulamasında kullanılır .mapset
  • İkili Uzay Bölümü - Neredeyse her 3D video oyununda hangi nesnelerin oluşturulması gerektiğini belirlemek için kullanılır.
  • İkili Denemeler - Yönlendirici tablolarını depolamak için hemen hemen her yüksek bant genişlikli yönlendiricide kullanılır.
  • Hash Trees - p2p programlarında ve bir karma işleminin doğrulanması gereken özel görüntü imzalarında kullanılır, ancak tüm dosya mevcut değildir.
  • Yığınlar - Verimli öncelik sıralarının uygulanmasında kullanılır; bu da birçok işletim sisteminde zamanlama işlemleri, yönlendiricilerde Hizmet Kalitesi ve A * (robotik ve video oyunları dahil AI uygulamalarında kullanılan yol bulma algoritması) . Ayrıca yığın sıralamasında kullanılır.
  • Huffman Kodlama Ağacı ( Chip Uni ) - .jpeg ve .mp3 dosya biçimleri tarafından kullanılanlar gibi sıkıştırma algoritmalarında kullanılır.
  • GGM Ağaçları - Kriptografik uygulamalarda sözde rastgele sayılar ağacı oluşturmak için kullanılır.
  • Sözdizimi Ağacı - İfadeleri ayrıştırmak için derleyiciler ve (dolaylı olarak) hesaplayıcılar tarafından oluşturulur.
  • Treap - Kablosuz ağ ve bellek ayırmada kullanılan rasgele veri yapısı.
  • T-ağacı - Çoğu veritabanında sürücüde veri depolamak için bir tür B-ağacı kullanılsa da, tüm (en) verilerini bellekte tutan veritabanları bunu yapmak için genellikle T-ağaçlarını kullanır.

İkili ağaçların arama için n-ary ağaçlarından daha sık kullanılmasının nedeni, n-ary ağaçlarının daha karmaşık olmasıdır, ancak genellikle gerçek hız avantajı sağlamaz.

mDüğümleri olan (dengeli) bir ikili ağaçta , bir seviyeden diğerine geçmek için bir karşılaştırma gerekir ve log_2(m)toplam log_2(m)karşılaştırmalar için seviyeler vardır .

Buna karşılık, n-ary ağacı bir sonraki seviyeye geçmek için log_2(n)karşılaştırmalar (ikili arama kullanarak) gerektirir . Olduğundan log_n(m)toplam seviyeleri, arama gerektirecektir log_2(n)*log_n(m)= log_2(m)karşılaştırmalar toplam. Bu nedenle, n-ary ağaçları daha karmaşık olsa da, gerekli toplam karşılaştırmalar açısından hiçbir avantaj sağlamazlar.

(Bununla birlikte, n-ary ağaçları niş durumlarda hala yararlıdır. Hemen akla gelen örnekler, dört düzey ağaçlar ve diğer boşluk bölümleme ağaçlarıdır, burada seviye başına yalnızca iki düğüm kullanarak alanı bölmek mantığı gereksiz yere karmaşık hale getirir; ve Sınırlama faktörünün her seviyede kaç karşılaştırma yapılması olmadığı, aynı anda sabit sürücüden kaç düğümün yüklenebildiği birçok veritabanında kullanılan B ağaçları )


3
> Treap - Kablosuz ağ ve bellek ayırmada kullanılan rasgele veri yapısı. Bellek ayırma ve kablosuz ağ iletişiminde tam olarak nasıl kullanılırlar?
frp

1
"İkili" kelimesini kullanan birçok yararlı veri yapısı ve algoritma vardır ve "ikili ARAMA ağacı" aslında bunlardan biridir, fakat bu sorulan soru değildir. Düz bir eski "ikili ağaç" ne kullanır, sıralı bir değil, dengeli bir değil, tam bir tane var. Sadece düz eski rasgele bir ağaç mı?
Michael Erickson

4
@MichaelErickson Cevabı okudun mu? Çünkü cevapladığım soru tam olarak bu.
BlueRaja - Dany Pflughoeft

1
Hash Ağaçlarına genellikle Merkle Ağaçları denildiğine inanıyorum, en azından bitcoin ve ethereum toplulukları, IPFS vb. İçinde
Duke

1
Bu cevap çok kötü, çok fazla hata içeriyor. Modern donanımdaki n-ary ağaçları, ikili ağaçlara kıyasla neredeyse her zaman tercih edilir. Adı verilen uygulamalar çoğunlukla ikili ağaçlar kullanmaz.
Stephan Eggermont

290

Çoğu insan ikili ağaçlar hakkında konuştuğunda, ikili arama ağaçlarını düşünmekten daha sıktır , bu yüzden önce bunu ele alacağım.

Dengeli olmayan bir ikili arama ağacı aslında öğrencileri veri yapıları hakkında eğitmekten biraz daha faydalıdır. Yani en, çünkü veri nispeten rasgele sırada geliyor sürece, ağaç can basit ikili ağaçlar olduğundan, bağlantılı bir listedir onun kötü durum formu, kolayca dejenere değil dengeli.

İyi bir örnek: Bir keresinde verilerini manipülasyon ve arama için bir ikili ağaca yükleyen bazı yazılımları düzeltmek zorunda kaldım. Verileri sıralı biçimde yazdı:

Alice
Bob
Chloe
David
Edwina
Frank

böylece, geri okurken, aşağıdaki ağaç ile sona erdi:

  Alice
 /     \
=       Bob
       /   \
      =     Chloe
           /     \
          =       David
                 /     \
                =       Edwina
                       /      \
                      =        Frank
                              /     \
                             =       =

dejenere olan formdur. O ağaçta Frank'i bulmaya gidersen, onu bulmadan önce altı düğümü de aramalısın.

İkili ağaçlar, onları dengelediğinizde arama yapmak için gerçekten yararlı olur. Bu, alt ağaçların kök düğümleri boyunca döndürülmesini içerir, böylece herhangi iki alt ağaç arasındaki yükseklik farkı 1'den küçük veya ona eşittir. Bir kerede bu adların dengeli bir ağaca eklenmesi size aşağıdaki sırayı verir:

1.   Alice
    /     \
   =       =

 

2.   Alice
    /     \
   =       Bob
          /   \
         =     =

 

3.        Bob
        _/   \_
   Alice       Chloe
  /     \     /     \
 =       =   =       =

 

4.        Bob
        _/   \_
   Alice       Chloe
  /     \     /     \
 =       =   =       David
                    /     \
                   =       =

 

5.           Bob
        ____/   \____
   Alice             David
  /     \           /     \
 =       =     Chloe       Edwina
              /     \     /      \
             =       =   =        =

 

6.              Chloe
            ___/     \___
         Bob             Edwina
        /   \           /      \
   Alice     =      David        Frank
  /     \          /     \      /     \
 =       =        =       =    =       =

Girişler eklendikçe sola dönen tüm alt ağaçların (adım 3 ve 6'da) olduğunu görebilirsiniz ve bu size en kötü durum aramasının olduğu dengeli bir ikili ağaç verir. O(log N) ziyade O(Ndejenere formu verir). Hiçbir noktada en yüksek NULL ( =), en düşük değerden birden fazla düzeyle farklılık göstermez. Ve, yukarıdaki son ağacında (yalnızca üç düğümler bakarak Frank bulabilirsiniz Chloe, Edwinanihayet ve Frank).

Tabii ki, ikili tress yerine dengeli çok yönlü ağaçlar yaptığınızda daha da yararlı olabilirler . Bu, her düğümün birden fazla öğe içerdiği anlamına gelir (teknik olarak, N öğeleri ve N + 1 işaretçileri tutarlar; ikili ağaç, 1 öğe ve 2 işaretçi içeren 1 yollu çok yönlü bir ağacın özel bir vakasıdır).

Üç yönlü bir ağaçla, aşağıdakilerle sonuçlanırsınız:

  Alice Bob Chloe
 /     |   |     \
=      =   =      David Edwina Frank
                 /     |      |     \
                =      =      =      =

Bu genellikle bir öğe dizini için anahtarların korunmasında kullanılır. Bir düğümün tam olarak bir disk bloğunun boyutu (512 bayt) olduğu donanım için optimize edilmiş veritabanı yazılımı yazdım ve tek bir düğüme olabildiğince çok sayıda anahtar koydunuz. İşaretçileri bu durumda aslında indeks dosyasından ayrı bir sabit uzunlukta kayıt direkt erişim dosyasına kayıt numaralarına idi (o kadar rekor sayıda Xsadece isteyen bulunabileceğini X * record_length).

Örneğin, işaretçiler 4 bayt ve anahtar boyutu 10 ise, 512 baytlık bir düğümdeki anahtar sayısı 36'dır. Bu, 36 tuş (360 bayt) ve 37 işaretçi (148 bayt) ile toplam 508 bayttır. Düğüm başına 4 bayt harcanır.

Çok yönlü tuşların kullanılması, iki fazlı aramanın karmaşıklığını ortaya çıkarır (düğümdeki doğru anahtarı bulmak için küçük bir sıralı (veya doğrusal ikili) aramayla birlikte doğru düğümü bulmak için çok yönlü arama), ancak avantajı bunun için oluşturduğundan daha az disk G / Ç işlemi yapar.

Bunu bellek içi bir yapı için yapmak için hiçbir neden göremiyorum, dengeli bir ikili ağaca yapışıp kodunuzu basit tutmanız daha iyi olur.

Ayrıca , veri kümeleriniz küçük olduğunda O(log N)aşırı avantajların O(N)gerçekten görünmediğini unutmayın. On beş kişiyi adres defterinizde saklamak için çok yönlü bir ağaç kullanıyorsanız, muhtemelen aşırıya kaçmış demektir. Avantajlar, son on yılda yüz bin müşterinizden gelen her sipariş gibi bir şey depoladığınızda gelir.

Büyük-O notasyonunun bütün amacı, N sonsuzluğa yaklaşırken . Bazı insanlar buna katılmayabilir, ancak başka hiçbir şey mevcut olmadığı sürece veri kümelerinin belirli bir boyutun altında kalacağından eminseniz kabarcık sıralaması kullanmak bile uygundur :-)


İkili ağaçların diğer kullanımlarına gelince, aşağıdakiler gibi çok sayıda vardır:

  • Yüksek anahtarların üstünde veya buna eşit olduğu ikili yığınlar solundan (veya aşağıdan veya sağdan ve sağdan) daha düşük ;
  • Karma tabloları, karma tablolarına benzer;
  • Bilgisayar dillerinin derlenmesi için soyut sözdizimi ağaçları;
  • Verilerin sıkıştırılması için Huffman ağaçları;
  • Ağ trafiği için ağaçların yönlendirilmesi.

Arama ağaçları için ne kadar açıklama ürettiğim göz önüne alındığında, diğerleri hakkında çok fazla ayrıntıya girmekten çekiniyorum, ancak arzu ederseniz, bunları araştırmak için yeterli olmalı.


28
+1 Böyle yazılı bir cevap için; artı beni dengeli çok yönlü ağaçlarla tanıştırdı, daha önce karşılaşmadığım bir şey.
Tony

3
Öğrencileri eğitmekten başka çok az şey için yararlı olduklarını iddia ettiğinize katılmıyorum. Basit bir statik veri yapısı olarak bile oldukça kullanışlıdır. Ancak, bu çok iyi yazılmış ve resimli bir cevaptır, bu yüzden geri kalanı için +1. :-)
Benson

1
Modern donanımda, neredeyse tüm ağaçlar çok yönlü olmalıdır.
Stephan Eggermont

89

Mors alfabesinin organizasyonu ikili bir ağaçtır.

ikili ağaç

Mors kodu


4
Bu benim en sevdiğim cevap. Liste boyunca karakterlere ulaşmak için gereken hesaplama karmaşıklığındaki azalmayı doğrudan gösterir.
Bıyık

7
Bu cevaptan gerçekten keyif aldım!
Duncan Edwards

2
Eskiden amatör radyo için filtreler yapan bir şirkette çalışıyordum, bu beni 'geri götürüyor' ...
JosephDoggie

62

İkili ağaç, her düğümün genellikle "sol" ve "sağ" olarak ayırt edilen en fazla iki alt düğüme sahip olduğu bir ağaç veri yapısıdır. Çocuklu düğümler üst düğümlerdir ve alt düğümler ebeveynlerine referanslar içerebilir. Ağacın dışında, varsa, "kök" düğüme (tüm düğümlerin atası) bir gönderme yapılır. Veri yapısındaki herhangi bir düğüme kök düğümünden başlanarak ve sol veya sağ alt öğeye yapılan referansları tekrar tekrar izleyerek erişilebilir. İkili ağaçta her düğümün derecesi en fazla iki olur.

İkili ağaç

İkili ağaçlar kullanışlıdır, çünkü resimde gördüğünüz gibi, ağaçta herhangi bir düğüm bulmak istiyorsanız, en fazla 6 kez bakmanız gerekir. Örneğin 24 nolu düğümü aramak isterseniz, kökten başlayacaksınız.

  • Kökün değeri 24'ten büyük olan 31'dir, bu nedenle sol düğüme gidersiniz.
  • Sol düğüm 15 değerine sahiptir, bu değer 24'ten küçüktür, böylece sağ düğüme gidersiniz.
  • Sağ düğümün 23 değeri 24'ten küçüktür, bu nedenle doğru düğüme gidersiniz.
  • Sağ düğümün 27 değeri 24'ten büyüktür, bu nedenle sol düğüme gidersiniz.
  • Sol düğümün değeri 25, bu değer 24'ten büyüktür, böylece sol düğüme gidersiniz.
  • Düğüm, aradığımız anahtar olan 24 değerine sahiptir.

Bu arama aşağıda gösterilmiştir: Ağaç arama

İlk geçişte tüm ağacın düğümlerinin yarısını hariç tutabileceğinizi görebilirsiniz. ikincisinde ise sol alt ağacın yarısı. Bu çok etkili aramalar yapar. Eğer bu 4 milyar element üzerinde yapıldıysa , sadece en fazla 32 kez arama yapmanız gerekir. Bu nedenle, ağaçta ne kadar çok öğe varsa, aramanız o kadar verimli olabilir.

Silme işlemleri karmaşık olabilir. Düğümün 0 veya 1 alt öğesi varsa, silinecek olanı hariç tutmak için bazı işaretçileri hareket ettirmektir. Ancak, 2 çocuklu bir düğümü kolayca silemezsiniz. Bu yüzden kısa bir yol alıyoruz. Diyelim ki 19 numaralı düğümü silmek istedik.

Sil 1

Sol ve sağ işaretçilerin nereye taşınacağını belirlemeye çalışmak kolay olmadığından, yerini alacak birini buluyoruz. Sol alt ağaca gidiyoruz ve gidebildiğimiz kadar sağa gidiyoruz. Bu bize silmek istediğimiz düğümün bir sonraki en büyük değerini verir.

Sil 3

Şimdi sol ve sağ işaretçiler hariç 18 içeriğin tümünü kopyalıyoruz ve orijinal 18 düğümü siyoruz.

Sil 4


Bu görüntüleri oluşturmak için, bir AVL ağacı, kendi kendini dengeleyen bir ağaç uyguladım, böylece herhangi bir zamanda ağacın yaprak düğümleri (çocuksuz düğümler) arasında en fazla bir seviye farkı vardır. Bu, ağacın eğri olmasını önler ve O(log n)ekleme ve silme işlemleri için biraz daha fazla zaman harcayarak maksimum arama süresini korur .

İşte AVL ağacımın kendini mümkün olduğunca kompakt ve dengeli tuttuğunu gösteren bir örnek.

resim açıklamasını buraya girin

Sıralı bir dizide, O(log(n))tıpkı bir ağaç gibi aramalar yine de sürer , ancak rastgele ekleme ve kaldırma, ağaç yerine O (n) alır O(log(n)). Bazı STL kapları bu performans özelliklerini kendi avantajlarına göre kullanırlar, bu nedenle takma ve çıkarma süreleri maksimum sürer O(log n), bu da çok hızlıdır. Bu kutulardan bazıları şunlardır map, multimap, set, ve multiset.

Bir AVL ağacı için örnek kodu http://ideone.com/MheW8 adresinde bulabilirsiniz.


5
O (günlük n) 'yi sadece bir ikili arama ağacı ile uğraşıyorsanız (yani iyi dengelenmiş) aramanız gerekir . Rasgele ikili ağaçların sipariş kısıtlamaları yoktur ve rastgele bir BST'nin arama karmaşıklığı O (log h ) vardır.
dlev

Bunlar ilgili Standart kaplarda saklanan türden değildir.
Köpek yavrusu

12

Ana uygulama ikili arama ağaçları . Bunlar, arama, ekleme ve kaldırma işlemlerinin çok hızlı olduğu bir veri yapısıdır ( log(n)işlemler hakkında)


1
İkili arama ağaçları bir uygulama değildir, ancak belirli bir ikili ağaç türüdür.
nbro

@nbro: Anlamsız semantikleri tartışıyorsunuz, ikisi de aynı şeyi söylemenin geçerli yolları. Burada "uygulama" ile "bilgisayar uygulaması" ile aynı anlama gelmediğini unutmayın
BlueRaja - Danny Pflughoeft

Sorunun, özel uygulamalar veya belirli ikili ağaç türleri ile değil, gerçek dünyadaki uygulamalarla daha ilgili olduğunu düşünüyorum. Ve btw, soru soran hangi veri yapılarının belirli ikili ağaçlar olduğunu sormuyor. Anlamsız değil, IMO. Ama yine de belirsiz olduğunu kabul ediyorum. Örneğin, diğer cevabınızda, gerçek bir uygulamada ağaç (ama mutlaka ikili değil ) veri yapısının bir uygulaması olan sözdizimi ağaçlarından bahsediyorsunuz . Akıl yürütmenize dayanarak, bildiğim tüm ikili ağaçları numaralandırabilirim, öğelerin miktarı nedeniyle hepimiz mutlu oluruz.
nbro


11

Bahsedilmemiş bir ikili ağacın ilginç bir örneği, özyinelemeli olarak değerlendirilen bir matematiksel ifadedir. Temelde pratik bir açıdan işe yaramaz, ancak bu tür ifadeleri düşünmenin ilginç bir yoludur.

Temel olarak ağacın her bir düğümü kendine özgü bir değere sahiptir veya çocuklarının değerleri üzerinde çalışarak özyinelemeli olarak değerlendirilir.

Örneğin, ifade (1+3)*2şu şekilde ifade edilebilir:

    *
   / \
  +   2
 / \
1   3

İfadeyi değerlendirmek için ebeveynin değerini isteriz. Bu düğüm sırayla değerlerini çocuklarından alır, bir artı operatörü ve sadece '2' içeren bir düğüm. Artı operatörü, değerlerini '1' ve '3' olan çocuklardan alır ve bunları ekleyerek 8'i döndüren çarpma düğümüne 4 döndürür.

İkili ağacın bu kullanımı, bir anlamda, lehçe gösterimini tersine çevirmeye benzer, çünkü işlemlerin yapıldığı sıra aynıdır. Ayrıca dikkat edilmesi gereken bir şey, bunun bir ikili ağaç olması gerekmediğidir, sadece en yaygın kullanılan operatörlerin ikili olmasıdır. En temel düzeyde, buradaki ikili ağaç aslında çok basit, tamamen işlevsel bir programlama dilidir.



9

Ben "saf" ikili ağaçlar için herhangi bir kullanım olduğunu sanmıyorum. (eğitim amaçları hariç) Kırmızı-Siyah ağaçlar veya AVL ağaçları gibi dengeli ikili ağaçlar çok daha kullanışlıdır, çünkü O (kütük) işlemlerini garanti ederler. Normal ikili ağaçlar bir liste (veya neredeyse liste) olabilir ve çok fazla veri kullanan uygulamalarda gerçekten yararlı değildir.

Dengeli ağaçlar genellikle haritaların veya kümelerin uygulanması için kullanılır. Bunu yapmanın daha iyi yolları olsa bile, O (nlogn) 'da sıralama için de kullanılabilirler.

Ayrıca arama / ekleme / silme için genellikle ikili arama ağaçlarından (dengeli veya değil) daha iyi performansa sahip karma tablolar kullanılabilir.

(Dengeli) ikili arama ağaçlarının yararlı olacağı bir uygulama, arama / ekleme / silme ve sıralama gerektiğinde olacaktır. Hazır yapı dengeli bir ağaç göz önüne alındığında, sıralama yerinde olabilir (neredeyse, özyineleme için gereken yığın alanını göz ardı ederek). Hala O (nlogn) olurdu, ancak daha küçük bir sabit faktör ve fazladan boşluk gerekmez (yeni dizi hariç, verilerin bir diziye konması gerektiğini varsayarsak). Öte yandan karma tablolar sıralanamaz (en azından doğrudan değil).

Belki de bir şey yapmak için bazı karmaşık algoritmalarda da yararlıdırlar, ama aklıma hiçbir şey gelmiyor. Daha fazla bulursam gönderimi düzenleyeceğim.

Fe B + ağaçları gibi diğer ağaçlar veritabanlarında yaygın olarak kullanılmaktadır.


9

En yaygın uygulamalardan biri, depolanan öğelere hızlı bir şekilde erişmek ve bunları aramak için verileri verimli bir şekilde sıralanmış biçimde saklamaktır. Örneğin std::mapveya std::setC ++ Standart Kitaplığı'nda.

Veri yapısı olarak ikili ağaç, ifade ayrıştırıcılarının ve ifade çözücülerin çeşitli uygulamaları için yararlıdır.

Ayrıca, dizinleme gibi bazı veritabanı sorunlarını çözmek için de kullanılabilir.

Genel olarak, ikili ağaç, belirli ağaç tabanlı veri yapısının genel bir konseptidir ve farklı özelliklere sahip çeşitli spesifik ikili ağaç türleri oluşturulabilir.


7

C ++ STL ve Java ve C # gibi diğer dillerde birçok standart kütüphanede. İkili arama ağaçları küme ve harita uygulamak için kullanılır.


2
aslında C ++ setlerinde / haritaları genellikle birkaç kısıtlamaya sahip ikili bir arama ağacı olan kırmızı-siyah ağaçlara dayanır.
Idan K

6

İkili ağaçların en önemli uygulamalarından biri, dengeli ikili arama ağaçlarıdır:

Bu tür ağaçlar, her düğüm eklendiğinde veya silindiğinde dönüş gibi sol alt ağaç ve sağ alt ağaç yüksekliklerindeki farkın küçük tutulması özelliğine sahiptir.

Bu nedenle, ağacın toplam yüksekliği, oturum n sırasına göre kalır ve düğümlerin arama, ekleme ve silinmesi gibi işlemler O (oturum n) zamanında gerçekleştirilir. C ++ STL'si de bu ağaçları kümeler ve haritalar şeklinde uygular.


5

Verileri sıralamanın hızlı bir yolu olarak kullanılabilirler. O (ikili (n)) adresindeki bir ikili arama ağacına veri ekleyin. Sonra onları sıralamak için ağacı gezdirin.


2

program sözdiziminiz veya bu nedenle doğal diller gibi pek çok şey ikili ağaç kullanılarak ayrıştırılabilir (zorunlu olmasa da).



2

Modern donanımda, ikili bir ağaç kötü önbellek ve alan davranışı nedeniyle neredeyse her zaman yetersizdir. Bu aynı zamanda (yarı) dengeli varyantlar için de geçerlidir. Onları bulursanız, performansın sayılmadığı (veya karşılaştırma işlevinin baskın olduğu) veya tarihi veya cehalet nedenleriyle daha olasıdır.


2
Neye kıyasla yetersiz?

çok yönlü ağaçlar. Bir bellek erişiminden elde ettiğiniz tüm veriler arasında doğrusal arama, yeni bir ana bellek erişimi yapmaktan çok daha hızlı
Stephan Eggermont

Sana inanmak istiyorum ama cevabında iddialarını destekleyen hiçbir şey yok. Kaynaklar, büyük gösterim veya başka bir şey. Lütfen detaylandırın.
PhilT


0

Bir AST'nin temsili için ikili bir ağaç kullanan bir derleyici, ağacı postorder, inorder gibi ayrıştırmak için bilinen algoritmaları kullanabilir.Programcı kendi algoritmasını bulmak zorunda değildir. Kaynak dosya için bir ikili ağaç n-ary ağacından daha yüksek olduğu için, bina daha fazla zaman alır. Bu üretimi alın: selstmnt: = "eğer" "(" ifade ")" stmnt "ELSE" stmnt İkili bir ağaçta 3 seviye düğüm olacaktır, ancak n-ary ağacının 1 seviyesi (chids) olacaktır

Bu nedenle Unix tabanlı işletim sistemleri yavaştır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.