Question: Quick help with HW based on Treenode write java codes follow the example import java.util.*; public class TreeNode { private T value; private List >
Quick help with HW
based on Treenode write java codes follow the example
import java.util.*;
public class TreeNode {
private T value;
private List> children;
public TreeNode(T value) {
this.value = value;
this.children = new ArrayList();
}
public TreeNode(T value, List> children) {
assert children != null : "children cannot be null";
this.value = value;
this.children = children;
}
public T getValue() {
return value;
}
public List> getChildren() {
return children;
}
public boolean isLeaf() {
return children == null || children.size() == 0;
}
}

public static void collectWords(TreeNode node, String prefix, List results) {
..........................................................
write the codes collectWords
`collectWords`, which takes in a TreeNode `node`, the String `prefix`, and a
list of Strings `results`, and updates the list with valid words.
```java
List exampleList = new ArrayList();
collectWords(example.getChildren().get(1), "", exampleList);
System.out.println(exampleList); // should output ["eam", "eef", "ees"]
exampleList.clear();
collectWords(example.getChildren().get(1), "b", exampleList);
System.out.println(exampleList); // should output ["beam", "beef", "bees"]
exampleList.clear();
collectWords(example.getChildren().get(1), "mm", exampleList);
System.out.println(exampleList); // should output ["mmeam", "mmeef", "mmees"]
```

* Add your key ideas comment on each step
new TreeNode('s') ))) import java.util." public class Autocomplete { private static TreeNode makeExample() { return new TreeNode('*', Arrays.asList( new TreeNode('a', Arrays.asList( new TreeNode('c', Arrays.asList( new TreeNode('e', Arrays.asListi new TreeNode('$) ) new TreeNode('n', Arrays.asList / new TreeNode('e', Arrays.asListi new TreeNode('s') > ), new TreeNode('n', Arrays.asList( new TreeNode('d', Arrays.asList( new TreeNode('s'), new TreeNode('r', Arrays.asList new TreeNode('e', Arrays.asList new TreeNode('w', Arrays.asList new TreeNode('') )) )) )) > ), new TreeNode('b', Arrays.asList( new TreeNode('e', Arrays.asList( new TreeNode('a', Arrays.asListi new TreeNode('m', Arrays.asList/ new TreeNode('s') new TreeNode('c', Arrays.asList new TreeNode('a', Arrays.asList new TreeNode('t', Arrays.asList new TreeNode('s') )) ), new TreeNode('o', Arrays.asLista new TreeNode('W', Arrays.asList new TreeNode('s") ), new TreeNode('u', Arrays.asList( new TreeNode('t', Arrays.asList new TreeNode('') ) ) D); } } import java.util.*; public class Autocomplete { public static void main(String[] args) { TreeNode example = makeExample(); // Q2 Examples I/List exampleList = new ArrayList(); Il collectWords(example.getChildreno.get(1), ", exampleList); //System.out.println(exampleList); // should output ["eam", "eef", "ees"] // exampleList.clear(); [/collectWords(example.getChildren().get(1), "b", exampleList); //System.out.println(exampleList); // should output ["beam", "beef", "bees"] // exampleList.clear(); [/collectWords(example.getChildreno.get(1), "mm", exampleList); //System.out.println(exampleList); // should output ["mmeam", "mmeef", "mmees"] new TreeNode('e', Arrays.asList new TreeNode('f', Arrays.asList new TreeNode('$) new TreeNode('s', Arrays.asList a n a o n e e u w t a a $ $ $ $ $ -OH D-- ` $ $ $ $ W $ new TreeNode('s') ))) import java.util." public class Autocomplete { private static TreeNode makeExample() { return new TreeNode('*', Arrays.asList( new TreeNode('a', Arrays.asList( new TreeNode('c', Arrays.asList( new TreeNode('e', Arrays.asListi new TreeNode('$) ) new TreeNode('n', Arrays.asList / new TreeNode('e', Arrays.asListi new TreeNode('s') > ), new TreeNode('n', Arrays.asList( new TreeNode('d', Arrays.asList( new TreeNode('s'), new TreeNode('r', Arrays.asList new TreeNode('e', Arrays.asList new TreeNode('w', Arrays.asList new TreeNode('') )) )) )) > ), new TreeNode('b', Arrays.asList( new TreeNode('e', Arrays.asList( new TreeNode('a', Arrays.asListi new TreeNode('m', Arrays.asList/ new TreeNode('s') new TreeNode('c', Arrays.asList new TreeNode('a', Arrays.asList new TreeNode('t', Arrays.asList new TreeNode('s') )) ), new TreeNode('o', Arrays.asLista new TreeNode('W', Arrays.asList new TreeNode('s") ), new TreeNode('u', Arrays.asList( new TreeNode('t', Arrays.asList new TreeNode('') ) ) D); } } import java.util.*; public class Autocomplete { public static void main(String[] args) { TreeNode example = makeExample(); // Q2 Examples I/List exampleList = new ArrayList(); Il collectWords(example.getChildreno.get(1), ", exampleList); //System.out.println(exampleList); // should output ["eam", "eef", "ees"] // exampleList.clear(); [/collectWords(example.getChildren().get(1), "b", exampleList); //System.out.println(exampleList); // should output ["beam", "beef", "bees"] // exampleList.clear(); [/collectWords(example.getChildreno.get(1), "mm", exampleList); //System.out.println(exampleList); // should output ["mmeam", "mmeef", "mmees"] new TreeNode('e', Arrays.asList new TreeNode('f', Arrays.asList new TreeNode('$) new TreeNode('s', Arrays.asList a n a o n e e u w t a a $ $ $ $ $ -OH D-- ` $ $ $ $ W $