Yanıtlar:
İ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
İ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:
İ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.
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.
İ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ı .
Bir Binary Tree
olan olmayan bir BST
;
5
/ \
/ \
9 2
/ \ / \
15 17 19 21
Aynı zamanda bir İkili Ağaç olan İkili Arama Ağacı ;
50
/ \
/ \
25 75
/ \ / \
20 30 70 80
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 .
İ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
İ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
Ö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.
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
İkili aramayı temsil eden bir ağaç . Burada aranan dizi [20, 30, 40, 50, 90, 100] ve hedef değer 40'tır.
İ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.
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:
Algorithms (4th Edition) ' dan alınan resim
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
İ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.