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; }