Процедуры и функции: Описать функцию, возвращающую строку, сформированную на базе символов, встречающихся в каждой строке дерева - C#
Формулировка задачи:
Создать строковое двоичное дерево. Описать функцию, возвращающую строку, сформированную на базе символов, встречающихся в каждой строке дерева. В программе использовать подпрограммы.
Решение задачи: «Процедуры и функции: Описать функцию, возвращающую строку, сформированную на базе символов, встречающихся в каждой строке дерева»
textual
Листинг программы
class Node
{
public String Name { get; set; }
public Node[] Nodes=new Node[2];
}
static String[] init = { "node", "1level", "1level", "2level", "2level", "2level", "2level","3level","3level" }; //init data
static int indexInit;
static int maxlevel;
static Node tree = null; //result tree
static void FillTree()
{
maxlevel = (int)Math.Ceiling(Math.Log((double)init.Length, 2D))+1;//max levels result tree
int level = 0;
FillNode(ref tree, ref level);
}
static void FillNode(ref Node tree, ref int level)
{
level++;
if (indexInit == init.Length) return;
tree = new Node();
tree.Name = init[indexInit++];
if (level < maxlevel)
{
for (int i = 0; i < tree.Nodes.Length; i++)
{
FillNode(ref tree.Nodes[i], ref level);
level--;
};
};
}
static void GetStrings(Node node, ref String result)
{
result += node.Name+" ";
foreach (Node n in node.Nodes)
if (n != null)
{
GetStrings(n, ref result);
}
}
static void Main(string[] args)
{
FillTree();
String str=String.Empty;
GetStrings(tree,ref str);
Console.WriteLine(str); //str - result string
Console.ReadKey();
}