Commit 0b9e34f

mo <mokha@cisco.com>
2017-08-08 21:23:20
remove need to extra array allocation.
1 parent 457144f
Changed files (1)
spec/binary_trees/kth_largest_in_bst_spec.rb
@@ -153,16 +153,18 @@ describe "#kth_largest_in_bst" do
     Traversal.new(k).traverse(tree)
   end
 
-  def dfs(node, yielder)
+  def traverse(node, yielder)
     return if node.nil?
 
-    dfs(node.left, yielder)
+    traverse(node.left, yielder)
     yielder.yield node.value
-    dfs(node.right, yielder)
+    traverse(node.right, yielder)
   end
 
   def kth_largest_in_bst(tree, k)
-    Enumerator.new { |yielder| dfs(tree, yielder) }.take(k).last
+    x = Enumerator.new { |yielder| traverse(tree, yielder) }
+    (k-1).times { x.next }
+    x.next
   end
 
   [