public static void Main()
Console.WriteLine("Hello World");
var input = new int[]{2, 3, 4, 7, 17, 19, 21, 35, 89};
var root = CreateBSTFromSortedArray(input, 0, input.Length - 1);
Console.WriteLine("Found Iterative without stack {0}", FindNodeIterative(root, 19).Value);
Console.WriteLine("Found Recursive {0}", FindNodeRecursive(root, 19).Value);
public static Node FindNodeIterative(Node root, int target)
else if (target < node.Value)
public static Node FindNodeRecursive(Node node, int target)
result = FindNodeRecursive(node.Left, target);
else if (target > node.Value)
result = FindNodeRecursive(node.Right, target);
public static Node CreateBSTFromSortedArray(int[] sourceArray, int start, int end){
var median = (start + end) / 2;
var node = new Node(sourceArray[median]);
node.Left = CreateBSTFromSortedArray(sourceArray, start, median - 1);
node.Right = CreateBSTFromSortedArray(sourceArray, median + 1, end);
public int Value {get; private set;}
public Node Left {get; set;}
public Node Right {get; set;}
public Node(int nodeValue){