Бинарное дерево с несколькими вложениями
Меня интересует бинарное дерево такого типа как на картинке. Поможет кто нибудь с реализацией? У меня возникла проблема с поиском нужного значения
class Program
{
static void Main(string[] args)
{
TreeNode first = new TreeNode
{
Left = null,
Right = null,
Center = new Tree
{
Value = "First",
Node = new TreeNode
{
Right = new Tree
{
Value = "Right",
Node = new TreeNode
{
Center = new Tree
{
Value = "Right second"
}
}
}
}
}
};
Console.ReadLine();
}
}
public class TreeNode
{
public Tree Left { get; set; }
public Tree Right { get; set; }
public Tree Center { get; set; }
}
public class Tree
{
public TreeNode Node { get; set; }
public string Value { get; set; }
}
Ответы (1 шт):
Автор решения: PashaPash
→ Ссылка
Напишите рекурсивный поиск. Дерево у вас, правда, не бинарное, раз в каждом узле задано 3 поддерева. Но примерно так:
public class TreeNode
{
public Tree Left { get; set; }
public Tree Right { get; set; }
public Tree Center { get; set; }
public bool Find(string value)
{
return (Left?.Find(value) ?? false) || (Center?.Find(value) ?? false) || (Right?.Find(value) ?? false);
}
}
public class Tree
{
public TreeNode Node { get; set; }
public string Value { get; set; }
public bool Find(string value)
{
return this.Value == value || (Node?.Find(value) ?? false);
}
}
Console.WriteLine(first.Find("Right")); // true
Console.WriteLine(first.Find("Some")); // false
