private void FindAllSumPathRecursive(TreeNode<int> node, List<string> results, Stack<int> stack, int sum, int currentSum) { if (node == null) { return; } if (node.LeftNode == null && node.RightNode == null) { if (currentSum + node.Value == sum) { int[] array = new int[stack.Count]; stack.CopyTo(array, 0); results.Add(node.Value + " " + string.Join(" ", array)); } return; } stack.Push(node.Value); FindAllSumPathRecursive(node.LeftNode, results, stack, sum, currentSum + node.Value); FindAllSumPathRecursive(node.RightNode, results, stack, sum, currentSum + node.Value); stack.Pop(); }
public int LongestValidParenthese(string input) { if (input == null || input.Length == 0) { throw new NullReferenceException("input is null"); } Stack<int> leftParenStack = new Stack<int>(); int validNum = 0; for (int i = 0; i < input.Length; i++) { if (input[i] == '(') { leftParenStack.Push(input[i]); } else if(input[i] == ')' && leftParenStack.Count != 0) { leftParenStack.Pop(); validNum++; } } return validNum; }