public List<int> GetBranches(SimpleBinaryNode node, int total, List<int> intermediateResults, List<List<int>> results)
        {
            intermediateResults.Add(node.Value);

            Console.WriteLine("Parent - " + node.Value + "  ->   " + string.Join(",", intermediateResults.ToArray()));
            if (node.RightNode != null && node.RightNode.Value == 5)
            { }

            if (intermediateResults.Sum() == total)
            {
                results.Add(intermediateResults);    //(new List<int>() {node.Value});
            }

            if (node.LeftNode != null)
            {
                List<int> t = GetBranches(node.LeftNode, total, new List<int>(intermediateResults), results);
                Console.WriteLine("Left - " + node.LeftNode.Value + "  ->   " + string.Join(",", t.ToArray()));
                //intermediateResults.AddRange(t);
            }
            if (node.RightNode != null)
            {
                List<int> t = GetBranches(node.RightNode, total, new List<int>(intermediateResults), results);
                Console.WriteLine("Right - " + node.RightNode.Value + "  ->   " + string.Join(",", t.ToArray()));
                //intermediateResults.AddRange(t);
            }
            if (node.LeftNode == null && node.RightNode == null)
            {
                intermediateResults.Clear();
                Console.WriteLine("Clear");
                Console.WriteLine("");
            }

            return intermediateResults;
        }
        public static SimpleBinaryNode GetCareerCupTreeSimple()
        {
            SimpleBinaryNode a = new SimpleBinaryNode(3, 4, 8);
            SimpleBinaryNode b = new SimpleBinaryNode(5, 6, -2);
            SimpleBinaryNode tree = new SimpleBinaryNode(2, a, b);

            tree.RightNode.RightNode.RightNode = new SimpleBinaryNode(2);

            return tree;
        }