0% found this document useful (0 votes)
26 views2 pages

Bool Empty : Returns 1 If There Is No Element Stored in The Structure Void Add (Int V) : Adds A New Element Equal To V in The Structure

Uploaded by

Andrei Ursu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views2 pages

Bool Empty : Returns 1 If There Is No Element Stored in The Structure Void Add (Int V) : Adds A New Element Equal To V in The Structure

Uploaded by

Andrei Ursu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

All codes must be commented and justified

You get points if your solution is correct


In order to have all the points, you must respect the complexity specifications

1. Implement a data structure supporting the following operation:


- bool empty(): returns 1 if there is no element stored in the structure
- void add(int v): adds a new element equal to v in the structure
- int next(): returns and removes from the structure the middle element (i.e., half of
the elements got inserted after the element returned)
All the operations should run in O(1) time /5
//we keep the n/2 most recent elements in a queue, and all others in a stack
typedef struct{
queue<int> fst;
stack<int> snd;
} data_structure;

bool empty(data_structure& a){ return a.snd.empty(); }

void add(data_structure& a, int v){


a.fst.push(v);
if( a.fst.size() > ( a.fst.size()+a.snd.size() )/2 ){
a.snd.push( a.fst.front() );
a.fst.pop();
}
}

int next(data_structure& a){


int v = a.snd.top();
a.snd.pop();
if( a.fst.size() > ( a.fst.size()+a.snd.size() )/2 ){
a.snd.push( a.fst.front() );
a.fst.pop();
}
return v;
}

2. You are given the pre-order of a binary tree (missing children are indicated by the symbol null).
Example: 4 1 null 3 null null 7 6 null null null
Decide whether this is a binary search tree.
The running time should be in O(n) /5
//One solution would be to construct the binary tree and to check whether it is a
binary search tree
//We here propose a slightly different solution where we needn’t construct the tree

bool bst(1); //final answer


fstream f (``date.in’’,fstream::in); //input file

int value;
bool right;
stack<int> dfs; //in order to simulate the tree

while(bst && !f.eof()){

if(f >> value){ //new value


if(!dfs.empty() && ( ( !right && dfs.top() < value ) || ( right && dfs.top()
>= value ) )) { bst = 0; }
else { dfs.push(value); right = 0; }
}else { //null
if(right) { dfs.pop(); }
right = 1;
f.ignore();
}

f.close();
return bst;

You might also like