fork download
  1. import java.util.List;
  2. import java.util.ArrayList;
  3.  
  4. class Idiom17
  5. {
  6. static class Tree<K,V> {
  7. K key;
  8. V deco;
  9. List<Tree<K,V>> children = new ArrayList<>();
  10.  
  11. Tree(K key, V deco) {
  12. this.key = key;
  13. this.deco = deco;
  14. }
  15.  
  16. Tree<K,V> addChild(K key, V deco) {
  17. Tree<K,V> child = new Tree<>(key, deco);
  18. this.children.add(child);
  19. return child;
  20. }
  21.  
  22. @Override
  23. public String toString() {
  24. StringBuilder sb = new StringBuilder();
  25. sb.append("(");
  26. sb.append(deco);
  27. if(children.isEmpty()) {
  28. sb.append(")");
  29. return sb.toString();
  30. }
  31. sb.append(" (");
  32. for(Tree<K,V> child: children)
  33. sb.append(child);
  34. sb.append("))");
  35. return sb.toString();
  36. }
  37. }
  38.  
  39. public static void main (String[] args)
  40. {
  41. Tree<String, String> tree = new Tree<>("Granpa", "Abraham");
  42. Tree<String, String> subtree = tree.addChild("Dad", "Homer");
  43. subtree.addChild("Kid 1", "Bart");
  44. subtree.addChild("Kid 2", "Lisa");
  45. subtree.addChild("Kid 3", "Maggie");
  46.  
  47. System.out.println(tree);
  48. }
  49. }
Success #stdin #stdout 0.05s 711168KB
stdin
Standard input is empty
stdout
(Abraham ((Homer ((Bart)(Lisa)(Maggie)))))