Работа с деревьями и строками: Нужно реализовать метод поиска - C#
Формулировка задачи:
Добрый день,есть такой вопрос:
Есть класс Treenode со структурой
Нужно реализовать метод поиска
где names это имена из TreeNode разделенные ","
Например Find(root,"first,second,third")-вернет Treenode с именем third
Подскажите,как это сделать, заранее спасибо!
class TreeNode
{
public List<TreeNode> Children;
public string Name;
}Find(TreeNode root,string names)
Решение задачи: «Работа с деревьями и строками: Нужно реализовать метод поиска»
textual
Листинг программы
using System;
using System.Collections;
using System.Collections.Generic;
namespace ConsoleApplication155
{
class Program
{
static void Main(string[] args)
{
TreeNode root = new TreeNode();
var n1 = new TreeNode { Name = "A"};
var n2 = new TreeNode { Name = "B" };
var n3 = new TreeNode { Name = "C" };
var n4 = new TreeNode { Name = "D" };
root.Children.Add(n1);
n1.Children.Add(n2);
n2.Children.Add(n3);
n2.Children.Add(n4);
var node = root.FindChildren("A,B,D");
Console.WriteLine(node.Name);
Console.ReadLine();
}
}
class TreeNode
{
public List<TreeNode> Children = new List<TreeNode>();
public string Name;
public TreeNode FindChildren(string path)
{
return FindChildren(path.Split(',').GetEnumerator());
}
public TreeNode FindChildren(IEnumerator enumerator)
{
if (!enumerator.MoveNext())
return this;
return Children.Find(n => n.Name == (string)enumerator.Current).FindChildren(enumerator);
}
}
}