| 14 | |
| 15 | |
| 16 | class Node[KT, VT]: |
| 17 | def __init__(self, key: KT | str = "root", value: VT | None = None): |
| 18 | self.key = key |
| 19 | self.value = value |
| 20 | self.forward: list[Node[KT, VT]] = [] |
| 21 | |
| 22 | def __repr__(self) -> str: |
| 23 | """ |
| 24 | :return: Visual representation of Node |
| 25 | |
| 26 | >>> node = Node("Key", 2) |
| 27 | >>> repr(node) |
| 28 | 'Node(Key: 2)' |
| 29 | """ |
| 30 | |
| 31 | return f"Node({self.key}: {self.value})" |
| 32 | |
| 33 | @property |
| 34 | def level(self) -> int: |
| 35 | """ |
| 36 | :return: Number of forward references |
| 37 | |
| 38 | >>> node = Node("Key", 2) |
| 39 | >>> node.level |
| 40 | 0 |
| 41 | >>> node.forward.append(Node("Key2", 4)) |
| 42 | >>> node.level |
| 43 | 1 |
| 44 | >>> node.forward.append(Node("Key3", 6)) |
| 45 | >>> node.level |
| 46 | 2 |
| 47 | """ |
| 48 | |
| 49 | return len(self.forward) |
| 50 | |
| 51 | |
| 52 | class SkipList[KT, VT]: |