Question: public Location getNextLocation ( ) { if ( currentLocation = = null ) { currentLocation = locationsTree.getRoot ( ) ; } else { currentLocation =

public Location getNextLocation(){
if (currentLocation == null){
currentLocation = locationsTree.getRoot();
} else {
currentLocation = getNextInLevelOrder(locationsTree.getRoot(), currentLocation);
}
return currentLocation != null ? currentLocation.getData() : null;
}
public Location getPreviousLocation(){
if (currentLocation == null){
currentLocation = locationsTree.getRoot();
} else {
currentLocation = getPreviousInLevelOrder(locationsTree.getRoot(), currentLocation);
}
return currentLocation != null ? currentLocation.getData() : null;
}
private TNode getNextInLevelOrder(TNode root, TNode currentNode){
LinkedQueue> queue = new LinkedQueue<>();
boolean foundCurrent = false;
if (root == null){
return null;
}
queue.enqueue(root);
while (!queue.isEmpty()){
TNode node = queue.dequeue();
if (foundCurrent){
return node;
}
if (node == currentNode){
foundCurrent = true;
}
if (node.getLeft()!= null){
queue.enqueue(node.getLeft());
}
if (node.getRight()!= null){
queue.enqueue(node.getRight());
}
}
return null;
}
private TNode getPreviousInLevelOrder(TNode root, TNode currentNode){
LinkedQueue> queue = new LinkedQueue<>();
TNode previousNode = null;
if (root == null){
return null;
}
queue.enqueue(root);
while (!queue.isEmpty()){
TNode node = queue.dequeue();
if (node == currentNode){
return previousNode;
}
previousNode = node;
if (node.getLeft()!= null){
queue.enqueue(node.getLeft());
}
if (node.getRight()!= null){
queue.enqueue(node.getRight());
}
}
return null;
}
} there is a problem in navigation level by level and from left to right here

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!