Обход не бинарного дерева - C#
Формулировка задачи:
есть вот такое дерево
Предположим, что мы уже построили его, какие есть способы его обхода, кто-нибудь может подсказать ? Заранее благодарю
public class Node // узел
{
public string data;
public List<Node> childs;
public Node(string data)
{
this.data = data;
childs = new List<Node>();
}Решение задачи: «Обход не бинарного дерева»
textual
Листинг программы
public class TreeViewConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var list = value as List<Node>;
var col = new List<TreeViewItem>();
CreateTree(list, col);
return col;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
//throw new NotImplementedException();
}
private void CreateTree(List<Node> list, dynamic ItemsSource)
{
foreach (var node in list)
{
var newTV = new TreeViewItem() { Header = node.Data };
if (node.childs.Count > 0)
{
CreateTree(node.childs, newTV.Items);
ItemsSource.Add(newTV);
}
else
{
ItemsSource.Add(newTV);
}
}
}
}