Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace Zad2
- {
- class Węzeł
- {
- public String wartość;
- public ArrayList dzieci;
- }
- class Drzewo
- {
- public Węzeł korzeń;
- }
- class Program
- {
- static Węzeł UtwórzWęzeł(String wartość)
- {
- Węzeł węzeł = new Węzeł();
- węzeł.wartość = wartość;
- węzeł.dzieci = new ArrayList();
- return węzeł;
- }
- static void DodajWęzeł(Węzeł węzeł, Węzeł dziecko)
- {
- węzeł.dzieci.Add(dziecko);
- }
- static void PreOrder(Węzeł węzeł)
- {
- Console.Write(" " + węzeł.wartość);
- if (węzeł.dzieci.Count > 0)
- {
- for (int i = 0; i < węzeł.dzieci.Count; i++)
- {
- PreOrder((Węzeł)węzeł.dzieci[i]);
- }
- }
- }
- static void DodajDzieci(Węzeł węzeł, string drzewo)
- {
- if (drzewo.Length <= 1)
- {
- return;
- }
- List<string> dzieci = new List<string>();
- List<int> leweNawiasy = new List<int>();
- List<int> praweNawiasy = new List<int>();
- int lewe = 0;
- int prawe = 0;
- for (int i = 0; i < drzewo.Length; ++i)
- {
- if (drzewo[i] == '(')
- {
- lewe++;
- leweNawiasy.Add(i);
- while (lewe != prawe)
- {
- i++;
- if (drzewo[i] == '(')
- {
- lewe++;
- }
- if (drzewo[i] == ')')
- {
- prawe++;
- }
- }
- praweNawiasy.Add(i);
- }
- lewe = 0;
- prawe = 0;
- }
- for (int i = 0; i < leweNawiasy.Count; ++i)
- {
- string dziecko = drzewo.Substring(leweNawiasy[i] + 1, praweNawiasy[i] - leweNawiasy[i] - 1);
- dzieci.Add(dziecko);
- }
- for (int i = 0; i < dzieci.Count; ++i)
- {
- string wartosc = dzieci[i][0].ToString();
- Węzeł węzełDziecka = UtwórzWęzeł(wartosc);
- DodajWęzeł(węzeł, węzełDziecka);
- }
- for (int i = 0; i < węzeł.dzieci.Count; ++i)
- {
- DodajDzieci((Węzeł)węzeł.dzieci[i], dzieci[i]);
- }
- }
- static void StworzDrzewo(Drzewo drzewo, Węzeł korzeń, string nawiasowe)
- {
- DodajDzieci(korzeń, nawiasowe);
- drzewo.korzeń = (Węzeł)korzeń.dzieci[0];
- }
- static void Main(string[] args)
- {
- Drzewo drzewo = new Drzewo();
- Węzeł korzeń = UtwórzWęzeł("");
- string nawiasowe = "(A(B(F)(D(H))(J))(C(G)(E(K))))";
- StworzDrzewo(drzewo, korzeń, nawiasowe);
- Węzeł dowiazaniowe = drzewo.korzeń;
- PreOrder(dowiazaniowe);
- Console.ReadKey();
- }
- }
- }
Add Comment
Please, Sign In to add comment