import java.util.*; public class Test2Answers { public static class TreeNode { String info; TreeNode left; TreeNode right; TreeNode(String val, TreeNode lptr, TreeNode rptr) { info = val; left = lptr; right = rptr; } } /** * Return sorted list containing same values stored in search tree t. * @param t is a search tree * @return sorted list containing same values in t */ public static ArrayList tree2list(TreeNode t){ ArrayList list = new ArrayList(); tree2listAux(t,list); return list; } /** * Add values of tree to list in sorted order. * @param list stores values (in order) already visited * @param root is the root of the (sub) tree to be added to list */ private static void tree2listAux(TreeNode root, ArrayList list){ if (root != null){ tree2listAux(root.left,list); list.add(root.info); tree2listAux(root.right,list); } } private static TreeNode list2treeAux(ArrayList list, int first, int last){ if (first > last) return null; int mid = (first + last)/2; String rootValue = (String) list.get(mid); // add code here return new TreeNode((String) list.get(mid), list2treeAux(list,first,mid-1), list2treeAux(list,mid+1,last)); } }