|
10 | 10 | / \ / |
11 | 11 | 4 7 13 |
12 | 12 |
|
13 | | ->>> t = BinarySearchTree() |
14 | | ->>> t.insert(8, 3, 6, 1, 10, 14, 13, 4, 7) |
| 13 | +>>> t = BinarySearchTree().insert(8, 3, 6, 1, 10, 14, 13, 4, 7) |
15 | 14 | >>> print(" ".join(repr(i.value) for i in t.traversal_tree())) |
16 | 15 | 8 3 1 6 4 7 10 14 13 |
17 | 16 |
|
|
40 | 39 | >>> testlist = (8, 3, 6, 1, 10, 14, 13, 4, 7) |
41 | 40 | >>> t = BinarySearchTree() |
42 | 41 | >>> for i in testlist: |
43 | | -... t.insert(i) |
| 42 | +... t.insert(i) # doctest: +ELLIPSIS |
| 43 | +BinarySearchTree(root=8) |
| 44 | +BinarySearchTree(root={'8': (3, None)}) |
| 45 | +BinarySearchTree(root={'8': ({'3': (None, 6)}, None)}) |
| 46 | +BinarySearchTree(root={'8': ({'3': (1, 6)}, None)}) |
| 47 | +BinarySearchTree(root={'8': ({'3': (1, 6)}, 10)}) |
| 48 | +BinarySearchTree(root={'8': ({'3': (1, 6)}, {'10': (None, 14)})}) |
| 49 | +BinarySearchTree(root={'8': ({'3': (1, 6)}, {'10': (None, {'14': (13, None)})})}) |
| 50 | +BinarySearchTree(root={'8': ({'3': (1, {'6': (4, None)})}, {'10': (None, {'14': ... |
| 51 | +BinarySearchTree(root={'8': ({'3': (1, {'6': (4, 7)})}, {'10': (None, {'14': (13, ... |
44 | 52 |
|
45 | 53 | Prints all the elements of the list in order traversal |
46 | 54 | >>> print(t) |
|
84 | 92 |
|
85 | 93 | from collections.abc import Iterable, Iterator |
86 | 94 | from dataclasses import dataclass |
87 | | -from typing import Any |
| 95 | +from typing import Any, Self |
88 | 96 |
|
89 | 97 |
|
90 | 98 | @dataclass |
@@ -145,7 +153,18 @@ def __reassign_nodes(self, node: Node, new_children: Node | None) -> None: |
145 | 153 | self.root = new_children |
146 | 154 |
|
147 | 155 | def empty(self) -> bool: |
148 | | - return self.root is None |
| 156 | + """ |
| 157 | + Returns True if the tree does not have any element(s). |
| 158 | + False if the tree has element(s). |
| 159 | +
|
| 160 | + >>> BinarySearchTree().empty() |
| 161 | + True |
| 162 | + >>> BinarySearchTree().insert(1).empty() |
| 163 | + False |
| 164 | + >>> BinarySearchTree().insert(8, 3, 6, 1, 10, 14, 13, 4, 7).empty() |
| 165 | + False |
| 166 | + """ |
| 167 | + return not self.root |
149 | 168 |
|
150 | 169 | def __insert(self, value) -> None: |
151 | 170 | """ |
@@ -173,9 +192,10 @@ def __insert(self, value) -> None: |
173 | 192 | parent_node = parent_node.right |
174 | 193 | new_node.parent = parent_node |
175 | 194 |
|
176 | | - def insert(self, *values) -> None: |
| 195 | + def insert(self, *values) -> Self: |
177 | 196 | for value in values: |
178 | 197 | self.__insert(value) |
| 198 | + return self |
179 | 199 |
|
180 | 200 | def search(self, value) -> Node | None: |
181 | 201 | if self.empty(): |
|
0 commit comments