Prompt
You’re given a Node class that has a name and an array of optional children nodes. When put together, nodes form an acyclic tree-like structure.
Implement the breadthFirstSearch method on the Node class, which takes in an empty array, traverses the tree using the Breadth-rst Search approach (specically navigating the tree from left to right), stores
all of the nodes’ names in the input array, and returns it.
Sample Input
Sample Output
["A", "B", "C", "D", "E", "F", "G","H", "I", "J", "K"]
Solution
import java.util.*;
class Program {
// Do not edit the class below except
// for the breadthFirstSearch method.
// Feel free to add new properties
// and methods to the class.
static class Node {
String name;
List<Node> children = new ArrayList<Node>();
public Node(String name) {
this.name = name;
}
public List<String> breadthFirstSearch(List<String> array) {
Queue<Node> queue = new LinkedList<Node>();
queue.add(this);
while(queue.size() > 0) {
Node current = queue.poll();
array.add(current.name);
queue.addAll(current.children);
}
return array;
}
public Node addChild(String name) {
Node child = new Node(name);
children.add(child);
return this;
}
}
}
Solution 2
import java.util.*;
class Program {
// Do not edit the class below except
// for the breadthFirstSearch method.
// Feel free to add new properties
// and methods to the class.
static class Node {
String name;
List<Node> children = new ArrayList<Node>();
public Node(String name) {
this.name = name;
}
public List<String> breadthFirstSearch(List<String> array) {
ArrayDeque<Node> queue = new ArrayDeque<Node>();//A
queue.add(this);
while(queue.size() > 0) {
Node current = queue.pollFirst();
array.add(current.name);
queue.addAll(current.children);//CURRENT>CHILDREN
}
return array;
}
public Node addChild(String name) {
Node child = new Node(name);
children.add(child);
return this;
}
}
}
#A
- the methods of ArrayDeque and Queue