Commit 130be5b

mo khan <mo@mokhan.ca>
2013-09-01 19:46:24
add in-order and post-order traversal strategies.
1 parent 917f994
lib/data_structures/binary_tree.rb
@@ -1,6 +1,6 @@
 require_relative "../utility/block_visitor"
 require_relative "../utility/total_count_visitor"
-require_relative "pre_order_traversal"
+require_relative "../pre_order_traversal"
 
 class BinaryTree
   def push(item)
lib/data_structures/linked_list_stack.rb
@@ -58,15 +58,3 @@ class Node
     @next == nil
   end
 end
-
-class TotalCountVisitor
-  attr_reader :result
-
-  def initialize
-    @result = 0
-  end
-
-  def visit(item)
-    @result += 1
-  end
-end
lib/in_order_traversal.rb
@@ -0,0 +1,7 @@
+class InOrderTraversal
+  def traverse(node, visitor)
+    node.left.accept(visitor, self) if node.left
+    visitor.visit(node)
+    node.right.accept(visitor, self) if node.right
+  end
+end
lib/post_order_traversal.rb
@@ -0,0 +1,7 @@
+class PostOrderTraversal
+  def traverse(node, visitor)
+    node.left.accept(visitor, self) if node.left
+    node.right.accept(visitor, self) if node.right
+    visitor.visit(node)
+  end
+end
lib/data_structures/pre_order_traversal.rb → lib/pre_order_traversal.rb
File renamed without changes