| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * A node in a splay tree. It holds the key, the value and the left | 6 * A node in a splay tree. It holds the key, the value and the left |
| 7 * and right children in the tree. | 7 * and right children in the tree. |
| 8 */ | 8 */ |
| 9 class SplayTreeNode<K, V> { | 9 class SplayTreeNode<K, V> { |
| 10 SplayTreeNode(K this.key, V this.value); | 10 SplayTreeNode(K this.key, V this.value); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 bool containsValue(V value) { | 215 bool containsValue(V value) { |
| 216 bool found = false; | 216 bool found = false; |
| 217 bool visit(SplayTreeNode node) { | 217 bool visit(SplayTreeNode node) { |
| 218 if (node === null) return false; | 218 if (node === null) return false; |
| 219 if (node.value == value) return true; | 219 if (node.value == value) return true; |
| 220 return visit(node.left) || visit(node.right); | 220 return visit(node.left) || visit(node.right); |
| 221 } | 221 } |
| 222 return visit(_root); | 222 return visit(_root); |
| 223 } | 223 } |
| 224 | 224 |
| 225 Collection<K> getKeys() { | 225 Collection<K> get keys { |
| 226 List<K> list = new List<K>(); | 226 List<K> list = new List<K>(); |
| 227 forEach((K k, V v) { list.add(k); }); | 227 forEach((K k, V v) { list.add(k); }); |
| 228 return list; | 228 return list; |
| 229 } | 229 } |
| 230 | 230 |
| 231 Collection<V> getValues() { | 231 Collection<V> get values { |
| 232 List<V> list = new List<V>(); | 232 List<V> list = new List<V>(); |
| 233 forEach((K k, V v) { list.add(v); }); | 233 forEach((K k, V v) { list.add(v); }); |
| 234 return list; | 234 return list; |
| 235 } | 235 } |
| 236 | 236 |
| 237 String toString() { | 237 String toString() { |
| 238 return Maps.mapToString(this); | 238 return Maps.mapToString(this); |
| 239 } | 239 } |
| 240 | 240 |
| 241 /** | 241 /** |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 if (node.key.compareTo(key) > 0) { | 297 if (node.key.compareTo(key) > 0) { |
| 298 return visit(node.left, node.key); | 298 return visit(node.left, node.key); |
| 299 } | 299 } |
| 300 if (node.key.compareTo(key) <= 0) { | 300 if (node.key.compareTo(key) <= 0) { |
| 301 return visit(node.right, ifEmpty); | 301 return visit(node.right, ifEmpty); |
| 302 } | 302 } |
| 303 } | 303 } |
| 304 return visit(_root, null); | 304 return visit(_root, null); |
| 305 } | 305 } |
| 306 } | 306 } |
| OLD | NEW |