| 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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 while (current.right === null) { | 188 while (current.right === null) { |
| 189 if (list.isEmpty()) return; | 189 if (list.isEmpty()) return; |
| 190 current = list.removeLast(); | 190 current = list.removeLast(); |
| 191 f(current.key, current.value); | 191 f(current.key, current.value); |
| 192 } | 192 } |
| 193 current = current.right; | 193 current = current.right; |
| 194 } | 194 } |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 int get length() { | 198 int get length { |
| 199 return _count; | 199 return _count; |
| 200 } | 200 } |
| 201 | 201 |
| 202 void clear() { | 202 void clear() { |
| 203 _root = null; | 203 _root = null; |
| 204 _count = 0; | 204 _count = 0; |
| 205 } | 205 } |
| 206 | 206 |
| 207 bool containsKey(K key) { | 207 bool containsKey(K key) { |
| 208 if (!isEmpty()) { | 208 if (!isEmpty()) { |
| (...skipping 88 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 |