Question: import java.util.ArrayList; import java.util.Comparator; / / Define the Train class class Train { private int trainId; private String arrivalTime; private String departureTime; / / Constructor

import java.util.ArrayList;
import java.util.Comparator;
// Define the Train class
class Train {
private int trainId;
private String arrivalTime;
private String departureTime;
// Constructor
public Train(int trainId, String arrivalTime, String departureTime){
this.trainId = trainId;
this.arrivalTime = arrivalTime;
this.departureTime = departureTime;
}
// Getters
public int getTrainId(){
return trainId;
}
public String getArrivalTime(){
return arrivalTime;
}
public String getDepartureTime(){
return departureTime;
}
}
// Define the TrainScheduleManager class
class TrainScheduleManager {
private ArrayList trains;
// Constructor
public TrainScheduleManager(){
this.trains = new ArrayList<>();
}
// Method to add a train to the schedule
public void addTrain(int trainId, String arrivalTime, String departureTime){
Train newTrain = new Train(trainId, arrivalTime, departureTime);
int index = binarySearchInsertPosition(arrivalTime);
trains.add(index, newTrain);
}
// Helper method to find the insert position using binary search
private int binarySearchInsertPosition(String targetArrivalTime){
int low =0;
int high = trains.size()-1;
while (low <= high){
int mid = low +(high - low)/2;
String midArrivalTime = trains.get(mid).getArrivalTime();
if (midArrivalTime.compareTo(targetArrivalTime)<0){
low = mid +1;
} else if (midArrivalTime.compareTo(targetArrivalTime)>0){
high = mid -1;
} else {
low = mid +1; // Insert after duplicates (unlikely as per the problem)
}
}
return low; // Insert position
}
// Method to remove a train from the schedule by trainId
public void removeTrain(int trainId){
for (int i =0; i < trains.size(); i++){
if (trains.get(i).getTrainId()== trainId){
trains.remove(i);
break;
}
}
}
// Method to display the current train schedule
public void displaySchedule(){
System.out.println("Train Schedule:");
for (Train train : trains){
System.out.println("Train ID: "+ train.getTrainId()+
"| Arrival: "+ train.getArrivalTime()+
"| Departure: "+ train.getDepartureTime());
}
}
}
// Main class to demonstrate TrainScheduleManager
public class Main {
public static void main(String[] args){
TrainScheduleManager manager = new TrainScheduleManager();
// Adding trains
manager.addTrain(1,"08:00","08:30");
manager.addTrain(2,"09:00","09:30");
manager.addTrain(3,"09:30","10:00");
manager.addTrain(4,"10:00","10:30");
// Display initial schedule
manager.displaySchedule();
// Remove train with ID 2
manager.removeTrain(2);
// Display updated schedule
System.out.println("
Updated Train Schedule after removing Train 2:");
manager.displaySchedule();
}
}
i need simple binary tree diagrams to illustrate the idea of performing the different functions on the code

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!