diff options
| author | mo <mokha@cisco.com> | 2017-08-08 15:23:20 -0600 |
|---|---|---|
| committer | mo <mokha@cisco.com> | 2017-08-08 15:23:20 -0600 |
| commit | 0b9e34feedc6f24dcd0c2a46c755d2723223c5ce (patch) | |
| tree | dba446c45a70edc60b833c55ec8ffc2ede0500d6 /spec/binary_trees | |
| parent | 457144f60334f7fccf5d5aec90386a7b5e0f8944 (diff) | |
remove need to extra array allocation.
Diffstat (limited to 'spec/binary_trees')
| -rw-r--r-- | spec/binary_trees/kth_largest_in_bst_spec.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/spec/binary_trees/kth_largest_in_bst_spec.rb b/spec/binary_trees/kth_largest_in_bst_spec.rb index 15aa99e..65449cb 100644 --- a/spec/binary_trees/kth_largest_in_bst_spec.rb +++ b/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 [ |
