Şimdi Ara

Array'den Ağaç yapısına çevirme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
452
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Ç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



  • 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.
  • 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--;
    }
    }
    }




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.