Guest User

Untitled

a guest
Jan 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. require 'prettyprint' # for the p function
  2.  
  3. class Tree
  4. attr_accessor :name
  5.  
  6. def initialize name
  7. @name = name
  8. @children = []
  9. end
  10.  
  11. def visit visitor
  12. visitor.visit(self)
  13. for child in @children
  14. child.visit(visitor)
  15. end
  16. visitor.value
  17. end
  18.  
  19. def << child
  20. @children << child
  21. self
  22. end
  23. end
  24.  
  25. root = Tree.new("root") << (Tree.new("child") << Tree.new("grandkid") << Tree.new("grandkid2")) << Tree.new("child2")
  26.  
  27. class Visitor
  28. attr_accessor :value
  29.  
  30. def initialize
  31. @value = []
  32. end
  33.  
  34. def visit node
  35. @value << node.name.reverse
  36. end
  37. end
  38.  
  39. p root.visit(Visitor.new)
Add Comment
Please, Sign In to add comment