|
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