splaytree 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/splaytree/version.rb +1 -1
- data/lib/splaytree.rb +7 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73a4e84bcf265f76d0ebd5817322cd5bff004d5a
|
4
|
+
data.tar.gz: 2cb43c9b89bcef31c0f57e8b7b8846ef151d909f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9031aa6721fce6a62e7b2439971848f3f9025663ac23f21beabfec6d2fe884f1f9e47047d58bb8517a0d8c1ac05deb9828128c181c7e46c98d0bdc95f3053bec
|
7
|
+
data.tar.gz: 19c451a080f67b6c3a3d7594ea94c4a744c637ed1d135c99a390902e7ecdda4586ffa95abe57e65781f2c48ad41da0d91ec659427819c6c9d5f2cfb7ac691b90
|
data/lib/splaytree/version.rb
CHANGED
data/lib/splaytree.rb
CHANGED
@@ -65,7 +65,13 @@ class Splaytree
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def height
|
68
|
-
|
68
|
+
subtree_height = -> (node) do
|
69
|
+
return 0 unless node
|
70
|
+
left = 1 + subtree_height.call(node.left)
|
71
|
+
right = 1 + subtree_height.call(node.right)
|
72
|
+
left > right ? left : right
|
73
|
+
end
|
74
|
+
subtree_height.call(@root)
|
69
75
|
end
|
70
76
|
|
71
77
|
def duplicates(key)
|
@@ -237,14 +243,6 @@ class Splaytree
|
|
237
243
|
node.to_h
|
238
244
|
end
|
239
245
|
|
240
|
-
def height_recursive(node)
|
241
|
-
return 0 unless node
|
242
|
-
|
243
|
-
left_height = 1 + height_recursive(node.left)
|
244
|
-
right_height = 1 + height_recursive(node.right)
|
245
|
-
left_height > right_height ? left_height : right_height
|
246
|
-
end
|
247
|
-
|
248
246
|
def splay(node)
|
249
247
|
until node.root?
|
250
248
|
parent = node.parent
|