Check if an array represents Inorder of Binary Search tree or not
Given an array of N element. The task is to check if it is Inorder traversal of any Binary Search Tree or not. Print “Yes” if it is Inorder traversal of any Binary Search Tree else print “No”.
Examples:
Input : arr[] = { 19, 23, 25, 30, 45 }
Output : Yes
Input : arr[] = { 19, 23, 30, 25, 45 }
Output : No
The idea is to use the fact that the inorder traversal of Binary Search Tree is sorted. So, just check if given array is sorted or not.
Implementation:
C++
#include<bits/stdc++.h>
using namespace std;
bool isInorder( int arr[], int n)
{
if (n == 0 || n == 1)
return true ;
for ( int i = 1; i < n; i++)
if (arr[i-1] > arr[i])
return false ;
return true ;
}
int main()
{
int arr[] = { 19, 23, 25, 30, 45 };
int n = sizeof (arr)/ sizeof (arr[0]);
if (isInorder(arr, n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
}
|
Java
class GFG {
static boolean isInorder( int [] arr, int n) {
if (n == 0 || n == 1 ) {
return true ;
}
for ( int i = 1 ; i < n; i++)
{
if (arr[i - 1 ] > arr[i]) {
return false ;
}
}
return true ;
}
public static void main(String[] args) {
int arr[] = { 19 , 23 , 25 , 30 , 45 };
int n = arr.length;
if (isInorder(arr, n)) {
System.out.println( "Yes" );
} else {
System.out.println( "No" );
}
}
}
|
Python3
def isInorder(arr, n):
if (n = = 0 or n = = 1 ):
return True
for i in range ( 1 , n, 1 ):
if (arr[i - 1 ] > arr[i]):
return False
return True
if __name__ = = '__main__' :
arr = [ 19 , 23 , 25 , 30 , 45 ]
n = len (arr)
if (isInorder(arr, n)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class GFG
{
static bool isInorder( int [] arr, int n)
{
if (n == 0 || n == 1)
{
return true ;
}
for ( int i = 1; i < n; i++)
{
if (arr[i - 1] > arr[i])
{
return false ;
}
}
return true ;
}
public static void Main()
{
int []arr = {19, 23, 25, 30, 45};
int n = arr.Length;
if (isInorder(arr, n))
{
Console.Write( "Yes" );
}
else
{
Console.Write( "No" );
}
}
}
|
PHP
<?php
function isInorder( $arr , $n )
{
if ( $n == 0 || $n == 1)
return true;
for ( $i = 1; $i < $n ; $i ++)
if ( $arr [ $i - 1] > $arr [ $i ])
return false;
return true;
}
$arr = array (19, 23, 25, 30, 45);
$n = sizeof( $arr );
if (isInorder( $arr , $n ))
echo "Yes" ;
else
echo "No" ;
?>
|
Javascript
<script>
function isInorder(arr , n)
{
if (n == 0 || n == 1) {
return true ;
}
for (i = 1; i < n; i++)
{
if (arr[i - 1] > arr[i]) {
return false ;
}
}
return true ;
}
var arr = [ 19, 23, 25, 30, 45 ];
var n = arr.length;
if (isInorder(arr, n)) {
document.write( "Yes" );
} else {
document.write( "No" );
}
</script>
|
Time complexity: O(n) where n is the size of array
Auxiliary Space: O(1)
Last Updated :
01 Dec, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...