İkili ağaç ve ikili arama ağacı arasındaki fark


Yanıtlar:


566

İkili ağaç: Her düğümün iki yaprağa sahip olduğu ağaç

  1
 / \
2   3

İkili arama ağacı: Kullanılan arama . Bir ikili sol alt içeren ağaç sadece az ebeveyn düğüm daha değerlerle düğümleri, nerede ve sağ çocuk sadece büyük veya ebeveyne eşit değerlerle düğümleri içerir.

  2
 / \
1   3

14
@pete: Bu kavramsal bir şey, aslında tamamen kısıtlanmamış bir şey yapmayacaksınız. Bununla birlikte, başka bir şekilde özel olan birçok arama dışı ikili ağaç vardır, örneğin ikili yığınlar.
user541686

19
@pete birary ağaçlarının karşılaştırılabilir veriler içermesi gerekmez, birçok (arama dışı) ikili ağaç, cebirsel ifadeyi ayrıştırmak için kullanılır, ikili ağaç, operatörü düğüm (ler) ve sayısal değerler olarak yerleştirerek bir infix gösterim ayrıştırıcısı yazmak için mükemmeldir olarak yapraklar
JBoy

2
@JBoy: Yine de bu durumda ikili ağaçlar olmayacaklar. (örneğin, tekli operatörlerin iki çocuğu olamaz.) Kısıtlanmamış ikili ağaçlar için pratik bir kullanım durumu düşünemiyorum, bu yüzden bu yorumu yaptım.
user541686

2
Harika ve basit. Görsel örnek için +1 :)
Andrei Konstantinov

@Mehrdad İkili bir ağacın düğüm başına bir veya iki çocuğu vardır. İfade ağaçları mükemmel bir örnektir. Bir ikili arama ağacı da yalnızca elemanların belirli sayılarla gerçekleşebilir ki, tam olur sürece, düğüm başına bir veya iki çocuğu var.
Lorne Marquis

56

İkili Ağaç , iki çocuklu (sol çocuk ve sağ Çocuk) özel bir ağaç şeklidir. Verilerin Ağaç yapısında gösterimi

İkili Arama Ağacı (BST) , aşağıdaki koşulu izleyen özel bir İkili Ağaç türüdür:

  1. sol alt düğüm üst Düğümünden daha küçük
  2. sağ alt düğüm üst Düğümünden daha büyük

23
Bu koşullar yeterli değildir. Sol alt ağacın tamamı üst öğeden daha az anahtar içermemeli ve sağ alt ağacın tamamı daha büyük düğüm içermelidir.
Lorne Marquis

1
@EJP lütfen yorumunuzu hazırlayabilir misiniz? tüm alt ağaç tarafından ne demek istiyorsun? alt ağacın tüm değerlerinin sol tarafta kökten daha az olması gerektiğini mi söylüyorsunuz? ve tüm değerler sağ taraftaki kök değerden büyük olmalıdır?
Asif Mushtaq

İkinci bağlantıyı takiben, "Doğrulama" ile ilgili bölümü okuyun;
Rob

38

İkili ağaç , her düğümün bir "sol" işaretçi, bir "sağ" işaretçi ve bir veri öğesi içerdiği düğümlerden oluşur. "Kök" işaretçisi ağaçtaki en üst düğüme işaret eder. Sol ve sağ işaretçiler her iki tarafta tekrar eden küçük "alt ağaçlara" işaret eder. Boş gösterici, boş ağacı olan ve öğeleri olmayan bir ikili ağacı temsil eder. Resmi özyinelemeli tanım: bir ikili ağaç boştur (boş bir işaretçi ile temsil edilir) veya tek bir düğümden oluşur; burada sol ve sağ işaretçiler (ileriye yönelik özyinelemeli tanım) her bir ikili ağaca işaret eder.

İkili arama ağacı (BST) veya "sıralı ikili ağaç", düğümlerin sırayla düzenlendiği bir ikili ağaç türüdür: her düğüm için, sol alt ağacındaki tüm öğeler düğüme (<) ve tüm öğelere göre daha azdır sağ alt ağacında düğümden (>) büyüktür.

    5
   / \
  3   6 
 / \   \
1   4   9    

Yukarıda gösterilen ağaç bir ikili arama ağacıdır - "kök" düğümü 5'tir ve sol alt ağaç düğümleri (1, 3, 4) <5'tir ve sağ alt ağaç düğümleri (6, 9)> 5'tir. Yinelemeli olarak, alt ağaçların her biri de ikili arama ağacı kısıtlamasına uymalıdır: (1, 3, 4) alt ağacında, 3 kökü, 1 <3 ve 4> 3'ü.

Problemlerde kesin ifadelere dikkat edin - bir "ikili arama ağacı" bir "ikili ağaçtan" ​​farklıdır.


@GabrielStaples Ağaç yapısı eklendi.
Gaurav Borole

14

Yukarıdaki herkes ikili ağaç ve ikili arama ağacı arasındaki farkı açıkladığı gibi, ben sadece verilen ikili ağacın ikili arama ağacı olup olmadığını test etmek için nasıl ekliyorum.

boolean b = new Sample().isBinarySearchTree(n1, Integer.MIN_VALUE, Integer.MAX_VALUE);
.......
.......
.......
public boolean isBinarySearchTree(TreeNode node, int min, int max)
{

    if(node == null)
    {
        return true;
    }

    boolean left = isBinarySearchTree(node.getLeft(), min, node.getValue());
    boolean right = isBinarySearchTree(node.getRight(), node.getValue(), max);

    return left && right && (node.getValue()<max) && (node.getValue()>=min);

}

Umarım size yardımcı olur. Bu konudan bahsetmeye değer hissettiğim gibi konudan saptığım için üzgünüm.


1
Sol veya sağ alt ağaç boş olabilir. Kodunuz bu durumu doğru şekilde işlemiyor.
Lorne Marquis

11

İkili Ağacı bir açılımı veri yapısı oluşur düğümler olabilir sadece var iki çocuk başvuruları.

İkili Arama Ağacı ( BST ) ise, her bir düğümün karşılaştırılabilir bir değere sahip olduğu özel bir İkili Ağaç veri yapısı formudur ve sola bağlı daha küçük değerli çocuklar ve sağa bağlı daha büyük değerli çocuklar.

Böylece, bütün BST 'ler vardır İkili Ağacı ancak sadece bazı İkili Ağacı ler de olabilir' BST . BST'nin İkili Ağacın bir alt kümesi olduğunu bildirin .

Bu nedenle, İkili Ağaç , İkili Arama Ağacı'ndan daha genel bir veri yapısıdır . Ve ayrıca söylemekte yarar var İkili arama ağacı bir olan sıralı jenerik için kurallar böyle seti vardır oysa ağaç İkili Ağacı .

İkili ağaç

Bir Binary Treeolan olmayan bir BST;

         5
       /   \
      /     \
     9       2
    / \     / \
  15   17  19  21

İkili Arama Ağacı (sıralanmış Ağaç)

Aynı zamanda bir İkili Ağaç olan İkili Arama Ağacı ;

         50
       /    \
      /      \
     25      75
    /  \    /  \
  20    30 70   80

İkili Arama Ağacı Düğümü özelliği

Ayrıca , BST'deki herhangi bir üst düğüm için ;

  • Tüm sol düğümler, üst düğümün değerinden daha küçük bir değere sahiptir. Üst örnekte, tümü 50'nin solunda ( sol torunlar ) bulunan {20, 25, 30} değerlerine sahip düğümler 50'den küçüktür.

  • Tüm sağ düğümler üst düğümün değerinden daha büyük bir değere sahiptir. Üst örnekte, tümü 50'nin sağında ( sağ torunlar ) bulunan {70, 75, 80} değerlerine sahip düğümler 50'den büyüktür.

İkili Ağaç Düğümü için böyle bir kural yoktur . İkili Ağaç Düğümü için tek kural iki çocuğa sahip olmaktır, bu yüzden kendini ikili olarak adlandırmanın nedenini açıklar .


Basit İkili Ağacı uygulayabilir miyiz? kullanılabilir herhangi bir uygulama var mı? ve bu ağacın kullanımı nedir?
Asif Mushtaq

@UnKnown İkili Arama Ağacı'nı sıralama ve arama için kullanabilirsiniz. İkili Arama Ağacının uygulanmasını burada bulabilirsiniz: github.com/bzdgn/data-structures-in-java/blob/master/src/…
Levent Divilioğlu

Bunu biliyorum ama Basit Ağaç veya Basit İkili Ağaç var mı? veya Basit İkili Ağaç herhangi bir uygulama?
Asif Mushtaq

Bunu kullanmanın bir anlamı yoktur, ancak kök ve çocuklara rasgele Düğüm örnekleri ekleyebilirsiniz.
Levent Divilioglu

10

İkili arama ağacı, aşağıdaki özelliği gösteren özel bir ikili ağaç türüdür: n düğümü için, n'nin sol alt ağacındaki her alt düğümün değeri n değerinden küçüktür ve sağ alt ağacındaki her alt düğümün değeri n değerinden büyük


8

İkili ağaç

İkili ağaç , 2 çocuk ve 1 ebeveyn içeren herhangi bir şey olabilir . Bağlantılı liste veya dizi olarak veya özel API'nizle uygulanabilir. Buna daha spesifik kurallar eklemeye başladığınızda, daha özel bir ağaç haline gelir . Bilinen en yaygın uygulama, solda daha küçük ve sağda daha büyük düğümler eklemesidir.

Örneğin, değeri 2 olan bir kök düğümü olan 9 ve yükseklik 3 etiketli bir ikili ağaç. Ağaç dengesiz ve sıralanmamış . https://en.wikipedia.org/wiki/Binary_tree

resim açıklamasını buraya girin

Örneğin, soldaki ağaçta A'nın 6 çocuğu var {B, C, D, E, F, G}. Sağdaki ikili ağaca dönüştürülebilir.

resim açıklamasını buraya girin

Ikili arama

İkili Arama, düğüm zincirinde belirli bir öğeyi bulmak için kullanılan teknik / algoritmadır. İkili arama, sıralanmış dizilerde çalışır .

İkili arama, hedef değeri dizinin orta öğesiyle karşılaştırır ; eşit değilse, hedefin yalanlayamayacağı yarı ortadan kaldırılır ve arama başarılı olana veya kalan yarısı boşalana kadar kalan yarıda devam eder. https://en.wikipedia.org/wiki/Binary_search_algorithm

resim açıklamasını buraya girin

İkili aramayı temsil eden bir ağaç . Burada aranan dizi [20, 30, 40, 50, 90, 100] ve hedef değer 40'tır.

resim açıklamasını buraya girin

İkili arama ağacı

Bu ikili ağacın uygulamalarından biridir. Bu arama için uzmanlaşmıştır .

İkili arama ağacı ve B-ağacı veri yapıları ikili aramaya dayanır .

Bazen sıralı veya sınıflandırılmış ikili ağaçlar olarak adlandırılan ikili arama ağaçları (BST) belirli bir kapsayıcı türüdür : "öğeleri" (sayılar, adlar vb.) Bellekte depolayan veri yapıları. https://en.wikipedia.org/wiki/Binary_search_tree

Kökünde 8 olan 9 ve derinlik 3 büyüklüğünde bir ikili arama ağacı. Yapraklar çizilmez.

resim açıklamasını buraya girin

Ve son olarak, iyi bilinen veri yapılarının ve uygulanan algoritmaların performans karşılaştırması için büyük şema:

resim açıklamasını buraya girin

Algorithms (4th Edition) ' dan alınan resim


4

İkili ağaç, çocukları asla ikiden fazla olmayan bir ağaçtır. İkili arama ağacı, sol alt öğenin kök düğümün anahtarından daha küçük bir değere sahip olması gereken değişkeni izlerken, sağ alt öğenin kök düğümün anahtarından daha büyük bir değere sahip olması gerekir.


4
  • İkili arama ağacı: ikili ağaçta düzensiz geçiş yapıldığında, eklenen öğelerin sıralı değerlerini alırsınız
  • İkili ağaç: Herhangi bir çapraz geçişte sıralı bir sipariş bulunamadı

Sıralı sipariş bulunmasına gerek yoktur . İkili bir arama ağacı aynı zamanda bir ikili ağaçtır. Bunlar birbirini dışlamazlar. BST, BT'nin uygun bir alt kümesidir.
Lorne Marquis

3

Belirli bir İkili Ağacın İkili Arama Ağacı olup olmadığını kontrol etmek için Alternatif bir Yaklaşım.

Traverse Ağacı In Inorder Moda (yani Sol Çocuk -> Veli -> Sağ Çocuk), Mağaza geçilen Düğüm Veri geçici Variable içindeki diyelim sağlayan temp , sadece içine saklamadan önce sıcaklığında akım düğümü'nü veri yüksek ardından önceki bir veya değil ortalama hava kontrol . Sonra sadece kırmaya dışarı, Ağaç İkili Arama Ağacı başka travers e kadar son değildir.

Aşağıda Java ile bir örnek verilmiştir:

public static boolean isBinarySearchTree(Tree root)
{
    if(root==null)
        return false;

    isBinarySearchTree(root.left);
    if(tree.data<temp)
        return false;
    else
        temp=tree.data;
    isBinarySearchTree(root.right);
    return true;
}

Geçici değişkeni dışarıda tut


Her iki alt ağaç boş olabilir. Algoritmanız bu durumu doğru işlemiyor.
Lorne Marquis

1

İkili arama ağacında, tüm düğümler belirli bir düzende düzenlenir - bir kök düğümün solundaki düğümler kökünden daha küçük bir değere sahiptir ve bir düğümün sağındaki tüm düğümler, kök.


0

Bir ağaç, yalnızca ve herhangi bir düğümün maksimum çocuk sayısı iki olduğunda ikili ağaç olarak adlandırılabilir.

Bir ağaç, yalnızca ve herhangi bir düğümün maksimum çocuk sayısı iki ve sol çocuk her zaman sağ çocuktan daha küçükse, ikili arama ağacı olarak adlandırılabilir.

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.