From ab9ad3ba73455977a68acb35adb325279bbbf6a0 Mon Sep 17 00:00:00 2001 From: Suyash Dongre <109069262+Suyashd999@users.noreply.github.com> Date: Sat, 4 Nov 2023 23:39:44 +0530 Subject: [PATCH 1/3] Added doctest to binary_search_tree.py --- .../binary_tree/binary_search_tree.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/data_structures/binary_tree/binary_search_tree.py b/data_structures/binary_tree/binary_search_tree.py index 38691c4755c9..b1607a60c4bc 100644 --- a/data_structures/binary_tree/binary_search_tree.py +++ b/data_structures/binary_tree/binary_search_tree.py @@ -145,6 +145,23 @@ def __reassign_nodes(self, node: Node, new_children: Node | None) -> None: self.root = new_children def empty(self) -> bool: + """ + Returns True if the tree does not have any element(s). + False if the tree does have element(s). + + >>> bst = BinarySearchTree() + >>> bst.insert(8, 3, 6, 1, 10, 14, 13, 4, 7) + >>> bst.empty() + False + + >>> bst = BinarySearchTree() + >>> bst.insert(1) + >>> bst.empty() + False + + >>> BinarySearchTree().empty() + True + """ return self.root is None def __insert(self, value) -> None: From 1049abff2be92beddf8deb4cc7aa1455f24d9667 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 5 Nov 2023 14:06:42 +0545 Subject: [PATCH 2/3] Update binary_search_tree.py --- .../binary_tree/binary_search_tree.py | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/data_structures/binary_tree/binary_search_tree.py b/data_structures/binary_tree/binary_search_tree.py index b1607a60c4bc..4f0d90c28033 100644 --- a/data_structures/binary_tree/binary_search_tree.py +++ b/data_structures/binary_tree/binary_search_tree.py @@ -84,7 +84,7 @@ from collections.abc import Iterable, Iterator from dataclasses import dataclass -from typing import Any +from typing import Any, Self @dataclass @@ -147,22 +147,16 @@ def __reassign_nodes(self, node: Node, new_children: Node | None) -> None: def empty(self) -> bool: """ Returns True if the tree does not have any element(s). - False if the tree does have element(s). - - >>> bst = BinarySearchTree() - >>> bst.insert(8, 3, 6, 1, 10, 14, 13, 4, 7) - >>> bst.empty() - False - - >>> bst = BinarySearchTree() - >>> bst.insert(1) - >>> bst.empty() - False + False if the tree has element(s). >>> BinarySearchTree().empty() True + >>> BinarySearchTree().insert(1).empty() + False + >>> BinarySearchTree().insert(8, 3, 6, 1, 10, 14, 13, 4, 7).empty() + False """ - return self.root is None + return not self.root def __insert(self, value) -> None: """ @@ -190,9 +184,10 @@ def __insert(self, value) -> None: parent_node = parent_node.right new_node.parent = parent_node - def insert(self, *values) -> None: + def insert(self, *values) -> Self: for value in values: self.__insert(value) + return self def search(self, value) -> Node | None: if self.empty(): From b15e54c8eb5f56d0ab419ba0751e114d719287d3 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 5 Nov 2023 14:19:19 +0545 Subject: [PATCH 3/3] Update binary_search_tree.py --- data_structures/binary_tree/binary_search_tree.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/data_structures/binary_tree/binary_search_tree.py b/data_structures/binary_tree/binary_search_tree.py index 4f0d90c28033..f08f278a8e47 100644 --- a/data_structures/binary_tree/binary_search_tree.py +++ b/data_structures/binary_tree/binary_search_tree.py @@ -10,8 +10,7 @@ / \ / 4 7 13 ->>> t = BinarySearchTree() ->>> t.insert(8, 3, 6, 1, 10, 14, 13, 4, 7) +>>> t = BinarySearchTree().insert(8, 3, 6, 1, 10, 14, 13, 4, 7) >>> print(" ".join(repr(i.value) for i in t.traversal_tree())) 8 3 1 6 4 7 10 14 13 @@ -40,7 +39,16 @@ >>> testlist = (8, 3, 6, 1, 10, 14, 13, 4, 7) >>> t = BinarySearchTree() >>> for i in testlist: -... t.insert(i) +... t.insert(i) # doctest: +ELLIPSIS +BinarySearchTree(root=8) +BinarySearchTree(root={'8': (3, None)}) +BinarySearchTree(root={'8': ({'3': (None, 6)}, None)}) +BinarySearchTree(root={'8': ({'3': (1, 6)}, None)}) +BinarySearchTree(root={'8': ({'3': (1, 6)}, 10)}) +BinarySearchTree(root={'8': ({'3': (1, 6)}, {'10': (None, 14)})}) +BinarySearchTree(root={'8': ({'3': (1, 6)}, {'10': (None, {'14': (13, None)})})}) +BinarySearchTree(root={'8': ({'3': (1, {'6': (4, None)})}, {'10': (None, {'14': ... +BinarySearchTree(root={'8': ({'3': (1, {'6': (4, 7)})}, {'10': (None, {'14': (13, ... Prints all the elements of the list in order traversal >>> print(t)