I want you to pick my code apart and give me some feedback on how I could make it better or more simple.
class TreeNode {
private TreeNode left;
private TreeNode right;
private TreeNode parent;
int item;
public TreeNode (TreeNode left, TreeNode right, TreeNode parent, int item) {
this.left = left;
this.right = right;
this.parent = parent;
this.item = item;
}
public int getItem() {
return item;
}
public void setItem(int item) {
this.item = item;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
public TreeNode getParent() {
return parent;
}
public void setParent(TreeNode parent) {
this.parent = parent;
}
}
public class Ebay {
private TreeNode root;
public Map<TreeNode, List<TreeNode>> getMap (List<TreeNode> listOfTreeNodes) {
final Map<TreeNode, List<TreeNode>> map = new HashMap<TreeNode, List<TreeNode>>();
for (TreeNode treeNode : listOfTreeNodes) {
if (map.get(treeNode.getParent()) != null) {
map.get(treeNode.getParent()).add(treeNode);
} else {
List<TreeNode> list = new ArrayList<TreeNode>();
list.add(treeNode);
map.put(treeNode.getParent(), list);
}
}
return map;
}
public void soStuff (List<TreeNode> listOfTreeNode) {
final Map<TreeNode, List<TreeNode>> map = getMap (listOfTreeNode);
root = map.get(null).get(0);
constructTree ( map , root);
}
public TreeNode constructTree (Map<TreeNode, List<TreeNode>> map, TreeNode node) {
if (map.containsKey(node)) {
List<TreeNode> list = map.get(node);
node.setLeft(constructTree(map, map.get(node).get(0)));
if (list.size() == 2) {
node.setRight(constructTree(map, map.get(node).get(1)));
}
}
return node;
}