예제 #1
0
            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);
                }
            }
예제 #2
0
    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));
            }
        }
    }
예제 #3
0
    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);
    }
예제 #4
0
        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);
        }