Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
2
Cevap
618
Tıklama
0
Öne Çıkarma
Array'den Ağaç yapısına çevirme
B
16 yıl (63 mesaj)
Onbaşı
Konu Sahibi

Çift boyutlu bir diziyi ağaç yapısına çevirmem gerekiyor. Çevirme mantığı olarak nasıl bir yol izlemem gerekiyor.

örnek dizi

M K
K F
M G
A B
A M
B D

ağaç yapısı
A
-B
--D
-M
--G
--K
---F

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



E
16 yıl (684 mesaj)
Yüzbaşı

merhaba.
Once agaci kokunu bulalim..
cift boyutlu dizimizde ikinci elemanlarda olmayan eleman bize koku veriyor.
Sonra bu cift boyutlu dizimizde dizimizdeki elemanlar bitene kadar donmemiz, ba$ka bir yerde, agacimizi olu$turmamiz gerekli.


Bu mesaja 1 cevap geldi.
E
16 yıl (684 mesaj)
Yüzbaşı

buyuk olasilikla daha compact yazilabilir

using System;
using System.Collections;

namespace ConsoleApplication1
{
class Program
{
public static String[,] myStrings = new String[6, 2] { { "M", "K" }, { "K", "F" }, { "M", "G" }, { "A", "B" }, { "A", "M" }, { "B", "D" } };
static void Main(string[] args)
{
ArrayList allStrings = new ArrayList();
ArrayList foundStrs = new ArrayList();
string foundStr = "";
foreach (var s in myStrings)
{
if(!allStrings.Contains(s[0]))
{
allStrings.Add(s[0]);
}
}
foreach (var s in allStrings)
{
for (int i = 0; i < myStrings.Length/2; i++)
{
if (myStrings[i,1].Equals(s.ToString()))
{
foundStrs.Add(s.ToString());
}
}
}
foreach (var s in allStrings)
{
if(!foundStrs.Contains(s.ToString()))
{
foundStr = s.ToString();
}
}
Console.WriteLine(foundStr);

for (int i = 0; i < myStrings.Length/2; i++)
{
if(myStrings[i,0].Equals(foundStr))
{
branchLevel = 1;
WriteBranch(myStrings[i, 0], myStrings[i,1]);
}

}
Console.ReadLine();
}

private static int branchLevel = 1;
private static void WriteBranch(string root, string branch)
{
for (int i = 0; i < branchLevel; i++)
{
Console.Write("-");
}
Console.WriteLine(branch);
for (int i = 0; i < myStrings.Length / 2; i++)
{
if(myStrings[i,0].Equals(branch))
{
branchLevel++;
WriteBranch(myStrings[i, 0], myStrings[i, 1]);
}
}
branchLevel--;
}
}
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.