public static void Main()
Node node1 = new Node(1);
Node node2 = new Node(3);
Node node3 = new Node(6);
Node node4 = new Node(8);
Node node5 = new Node(2) { Left = node1, Right = node2 };
Node node6 = new Node(7) { Left = node3, Right = node4 };
Node node7 = new Node(5) { Left = node5, Right = node6 };
int[] array = new int[5] { 1, 3, 5, 6, 7 };
Console.WriteLine(IsAllInBST3(array, node7));
public Node Left {get; set;}
public Node Right {get; set;}
public int Value {get; set;}
public Node(int value) { Value = value; }
public Node FindElement(int element)
else if (element < Value)
return Left?.FindElement(element);
return Right?.FindElement(element);
public static bool InorderTraversal(int[] array, Node node, ref int index)
if (InorderTraversal(array, node.Left, ref index))
if (node.Value == array[index])
if (index == array.Length)
return InorderTraversal(array, node.Right, ref index);
public static bool IsAllInBST3(int[] array, Node root)
return InorderTraversal(array, root, ref index);