Bir şey eksik çiftleri ile uğraşan

oy
2

Benim BST yinelenen girdileri ile baş edebilmek için vardır. Herkes aşırı miktarda kod gerektirmeyen bu konuda nasıl herhangi stratejileri var mı? Ben sürekli sağa çiftleri ekleyerek düşündüm ama BST emri o irade pisliği. yinelenen sırayla iki çocuk sahibi iki çocuk olduğunda örneğin ne olur ?. yinelenen ekleme yeterince kolay, ama yerini düğüm ile yapılması gereken nedir?

Oluştur 10/10/2009 saat 08:51
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
2

Bağlantılı listeler halinde ikili arama ağacının düğümleri yapabiliriz.

class Data implements Comparable<Data>
{
   // These are the data elements in your binary search tree
}

class TreeNode
{
  TreeNode left; // elements less than current node, or null
  TreeNode right; // elements greater than current node, or null
  List<Data> items = new LinkedList<Data>();    
}

Burada, treeNode.itemsboş olmayan bir liste olduğunu, her zaman böyle olduğu item1.compareTo(item2) == 0her için item1ve item2de treeNode.items.

Yinelenen bir öğe eklemek için, ilgili bulacağını TreeNodenesne ve yeni bir öğe eklemek items.

Sizin alakalı bir kez dışında daha önce olduğu gibi unsurları bulma mantığı hemen hemen aynıdır TreeNodesen bağlantılı liste yürütmek zorunda nesneyi.

Cevap 10/10/2009 saat 13:17
kaynak kullanıcı

oy
3

Sürece BST dengeleme kendi kendine değil, ben onlara eşittir düğümün sol veya sağında ya eşit düğümleri koyarak ile ilgili bir sorun görmüyorum.

Düzen (simonn beyanatından sonra):

Söz konusu "yinelenen düğüm" zaten 2 çocuk varsa, soldaki "Yeni yinelenen düğümü" insert ve "eski yinelenen düğümü" sol çocuk "yeni yinelenen düğüm" sol çocuk haline sağlar.

Bir örnekle açıklayayım. yinelenen takmadan önce ağacı:

    4'
   / \
  2   5
 / \
1   3

Ve şimdi eleman 4''eklenir:

      4'
     / \
    4'' 5
   /
  2   
 / \
1   3

Sürece ağaç kendini dengeleme olmadığından, iyi olmalıdır.

Cevap 10/10/2009 saat 13:37
kaynak kullanıcı

oy
0

aslında ayrı düğüm gibi yinelenen girdileri saklamak gerekir acaba? yeterli sizin Düğüm bir karşı değişken ekleyerek misiniz? Bu yolla ağaç travers eğer yinelenen giriş sayısını bilmek ve hala düzeni korumak olacaktır.

Cevap 21/06/2012 saat 19:26
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more