fork download
  1. import java.util.List;
  2. import java.util.ArrayList;
  3. import java.util.function.Consumer;
  4.  
  5. class Idiom16
  6. {
  7. static class BinTree<T extends Comparable<T>> {
  8. T value;
  9. BinTree<T> left;
  10. BinTree<T> right;
  11.  
  12. BinTree(T value) {
  13. this.value = value;
  14. }
  15.  
  16. @Override
  17. public String toString() {
  18. StringBuilder sb = new StringBuilder();
  19. sb.append("(");
  20. sb.append(value);
  21. sb.append(" ");
  22. sb.append(left==null ? "()" : left);
  23. sb.append(right==null ? "()" : right);
  24. sb.append(")");
  25. return sb.toString();
  26. }
  27.  
  28. void dfs(Consumer<BinTree<T>> f) {
  29. if( left != null )
  30. left.dfs(f);
  31. f.accept(this);
  32. if( right != null )
  33. right.dfs(f);
  34. }
  35. }
  36.  
  37. public static void main (String[] args)
  38. {
  39. BinTree<Integer> five = new BinTree<>(5);
  40. BinTree<Integer> one = new BinTree<>(1);
  41. BinTree<Integer> eight = new BinTree<>(8);
  42. BinTree<Integer> six = new BinTree<>(6);
  43. five.left = one;
  44. five.right = eight;
  45. eight.left = six;
  46.  
  47. Consumer<BinTree<Integer>> finder = new Consumer<BinTree<Integer>>() {
  48. @Override
  49. public void accept(BinTree<Integer> bt) {
  50. System.out.println("Found " + bt.value);
  51. }
  52. };
  53. five.dfs(finder);
  54. }
  55. }
Success #stdin #stdout 0.03s 842240KB
stdin
Standard input is empty
stdout
Found 1
Found 5
Found 6
Found 8