public static void Master(List <List <int> > arrays) { var resultList = new List <int>(); foreach (var arrray in arrays) { var length = arrray.Count; var tree = new Tree(); tree.Node = new Tree.TreeNode() { Value = arrray[0] }; var root = tree.Node; var current = tree.Node; for (int i = 1; i < length; i++) { current = TreeMethods.AddToTree(current, arrray[i]); } var checkResult = CheckTree(root); //возвращаем результат resultList.Add(checkResult); Console.WriteLine(checkResult); } }
static void Main(string[] args) { while (true) { var tree = TreeMethods.Read(); //Console.WriteLine("Root node: " + tree.Value); //tree.Print(); //List<int> list = new List<int>(); //tree.GetLeafs(list); //list.Sort(); //Console.WriteLine("Leaf nodes: " + // string.Join(" ", list.ToArray())); //List<int> middleNodes = TreeMethods.GetMiddleList(tree); //middleNodes.Sort(); //Console.WriteLine("Middle nodes: " + string.Join(" ", // middleNodes)); //Tree<int> deepestNode = TreeMethods.FindDeepestNode(tree); //Console.WriteLine("Deepest node: " + deepestNode.Value); //Stack<int> longestPath = TreeMethods.LongestPath(tree); //Console.WriteLine("Longest path: " + string.Join(" ", // longestPath)); //int sum = int.Parse(Console.ReadLine()); //List<Stack<int>> pathsWithSum = TreeMethods.AllPathsWithSum(tree, sum); //Console.WriteLine("Paths of sum " + sum + ":"); //foreach (var path in pathsWithSum) //{ // Console.WriteLine(string.Join(" ", path)); //} //int sum = int.Parse(Console.ReadLine()); //List<Stack<int>> pathsWithSum = TreeMethods.SubtreesWithSum(tree, sum); //Console.WriteLine("Paths of sum " + sum + ":"); //foreach (var path in pathsWithSum) //{ // Console.WriteLine(string.Join(" ", path)); //} int sum = int.Parse(Console.ReadLine()); List <List <int> > subtrees = TreeMethods.SubtreesWithSum(tree, sum); Console.WriteLine("Subtrees of sum " + sum + ":"); foreach (var subtree in subtrees) { Console.WriteLine(string.Join(" ", subtree)); } } }
public static Stack <int> LongestPath(Tree <int> tree) { Stack <int> path = new Stack <int>(); Tree <int> deepestNode = TreeMethods.FindDeepestNode(tree); Tree <int> currentNode = deepestNode; while (currentNode != null) { path.Push(currentNode.Value); currentNode = currentNode.Parent; } return(path); }
static void Main(string[] args) { var inputArrays = new List <List <int> >() { new List <int> { 1, 3, 4, 2 }, new List <int> { 3, 2, 1, 5, 4, 6 }, new List <int> { 1, 3, 2 } }; TreeMethods.Master(inputArrays); }