From 6029b3010cc5f688204e717c602fb11e9bb6b704 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 21:16:20 +0530 Subject: [PATCH 01/45] Added new algorithm --- data_structures/binary_tree/max_sum_BST.py | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 data_structures/binary_tree/max_sum_BST.py diff --git a/data_structures/binary_tree/max_sum_BST.py b/data_structures/binary_tree/max_sum_BST.py new file mode 100644 index 000000000000..3e9ce71dac9a --- /dev/null +++ b/data_structures/binary_tree/max_sum_BST.py @@ -0,0 +1,68 @@ +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +def maxSumBST(root: TreeNode) -> int: + + """ + The solution traverses a binary tree to find the maximum sum of + keys in any subtree that is a Binary Search Tree (BST). It uses + recursion to validate BST properties and calculates sums, returning + the highest sum found among all valid BST subtrees. + + >>> t1 = TreeNode(4) + >>> t1.left = TreeNode(3) + >>> t1.left.left = TreeNode(1) + >>> t1.left.right = TreeNode(2) + >>> print(maxSumBST(t1)) + 2 + >>> t2 = TreeNode(-4) + >>> t2.left = TreeNode(-2) + >>> t2.right = TreeNode(-5) + >>> print(maxSumBST(t2)) + 0 + >>> t3 = TreeNode(1) + >>> t3.left = TreeNode(4) + >>> t3.left.left = TreeNode(2) + >>> t3.left.right = TreeNode(4) + >>> t3.right = TreeNode(3) + >>> t3.right.left = TreeNode(2) + >>> t3.right.right = TreeNode(5) + >>> t3.right.right.left = TreeNode(4) + >>> t3.right.right.right = TreeNode(6) + >>> print(maxSumBST(t3)) + 20 + """ + ans = 0 + + def solver(node): + nonlocal ans + + if not node: + return True, float('inf'), float('-inf'), 0 # Valid BST, min, max, sum + + isLeftValid, min_left, max_left, sum_left = solver(node.left) + isRightValid, min_right, max_right, sum_right = solver(node.right) + + if isLeftValid and isRightValid and max_left < node.val < min_right: + total_sum = sum_left + sum_right + node.val + ans = max(ans, total_sum) + return True, min(min_left, node.val), max(max_right, node.val), total_sum + + return False, -1, -1, -1 # Not a valid BST + + solver(root) + return ans + +if __name__ == "__main__": + + import doctest + doctest.testmod() + + + + + + From 0d53deaad4fb6b57513f6712e682b22686868c80 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 15:48:26 +0000 Subject: [PATCH 02/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/max_sum_BST.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/data_structures/binary_tree/max_sum_BST.py b/data_structures/binary_tree/max_sum_BST.py index 3e9ce71dac9a..938c2dc2b5a0 100644 --- a/data_structures/binary_tree/max_sum_BST.py +++ b/data_structures/binary_tree/max_sum_BST.py @@ -4,8 +4,8 @@ def __init__(self, val=0, left=None, right=None): self.left = left self.right = right -def maxSumBST(root: TreeNode) -> int: +def maxSumBST(root: TreeNode) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -39,10 +39,10 @@ def maxSumBST(root: TreeNode) -> int: def solver(node): nonlocal ans - + if not node: - return True, float('inf'), float('-inf'), 0 # Valid BST, min, max, sum - + return True, float("inf"), float("-inf"), 0 # Valid BST, min, max, sum + isLeftValid, min_left, max_left, sum_left = solver(node.left) isRightValid, min_right, max_right, sum_right = solver(node.right) @@ -50,19 +50,14 @@ def solver(node): total_sum = sum_left + sum_right + node.val ans = max(ans, total_sum) return True, min(min_left, node.val), max(max_right, node.val), total_sum - + return False, -1, -1, -1 # Not a valid BST solver(root) return ans - -if __name__ == "__main__": - - import doctest - doctest.testmod() - - - +if __name__ == "__main__": + import doctest + doctest.testmod() From 2c983130a45b72e7d95b786ad280386d5dbd2e77 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 21:54:18 +0530 Subject: [PATCH 03/45] Updated changes --- data_structures/binary_tree/max_sum_BST.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/data_structures/binary_tree/max_sum_BST.py b/data_structures/binary_tree/max_sum_BST.py index 3e9ce71dac9a..1c8a3df06f45 100644 --- a/data_structures/binary_tree/max_sum_BST.py +++ b/data_structures/binary_tree/max_sum_BST.py @@ -1,10 +1,10 @@ class TreeNode: - def __init__(self, val=0, left=None, right=None): + def __init__(self, val=0, left=None, right=None) -> None: self.val = val self.left = left self.right = right -def maxSumBST(root: TreeNode) -> int: +def max_sum_bst(root: TreeNode) -> int: """ The solution traverses a binary tree to find the maximum sum of @@ -16,12 +16,12 @@ def maxSumBST(root: TreeNode) -> int: >>> t1.left = TreeNode(3) >>> t1.left.left = TreeNode(1) >>> t1.left.right = TreeNode(2) - >>> print(maxSumBST(t1)) + >>> print(max_sum_bst(t1)) 2 >>> t2 = TreeNode(-4) >>> t2.left = TreeNode(-2) >>> t2.right = TreeNode(-5) - >>> print(maxSumBST(t2)) + >>> print(max_sum_bst(t2)) 0 >>> t3 = TreeNode(1) >>> t3.left = TreeNode(4) @@ -32,21 +32,21 @@ def maxSumBST(root: TreeNode) -> int: >>> t3.right.right = TreeNode(5) >>> t3.right.right.left = TreeNode(4) >>> t3.right.right.right = TreeNode(6) - >>> print(maxSumBST(t3)) + >>> print(max_sum_bst(t3)) 20 """ ans = 0 - def solver(node): + def solver(node) -> int: nonlocal ans if not node: return True, float('inf'), float('-inf'), 0 # Valid BST, min, max, sum - isLeftValid, min_left, max_left, sum_left = solver(node.left) - isRightValid, min_right, max_right, sum_right = solver(node.right) + is_left_valid, min_left, max_left, sum_left = solver(node.left) + is_right_valid, min_right, max_right, sum_right = solver(node.right) - if isLeftValid and isRightValid and max_left < node.val < min_right: + if is_left_valid and is_right_valid and max_left < node.val < min_right: total_sum = sum_left + sum_right + node.val ans = max(ans, total_sum) return True, min(min_left, node.val), max(max_right, node.val), total_sum From ec766f32b2aabc8f4726ba7db305c9bb0e76f145 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 16:28:18 +0000 Subject: [PATCH 04/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/max_sum_BST.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/data_structures/binary_tree/max_sum_BST.py b/data_structures/binary_tree/max_sum_BST.py index b174c1969c79..a07b91c86c06 100644 --- a/data_structures/binary_tree/max_sum_BST.py +++ b/data_structures/binary_tree/max_sum_BST.py @@ -4,8 +4,8 @@ def __init__(self, val=0, left=None, right=None) -> None: self.left = left self.right = right -def max_sum_bst(root: TreeNode) -> int: +def max_sum_bst(root: TreeNode) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -41,12 +41,11 @@ def solver(node) -> int: nonlocal ans if not node: - return True, float('inf'), float('-inf'), 0 # Valid BST, min, max, sum - + return True, float("inf"), float("-inf"), 0 # Valid BST, min, max, sum + is_left_valid, min_left, max_left, sum_left = solver(node.left) is_right_valid, min_right, max_right, sum_right = solver(node.right) - if is_left_valid and is_right_valid and max_left < node.val < min_right: total_sum = sum_left + sum_right + node.val ans = max(ans, total_sum) From 822df1da329d8d7a0b721f420ff068c48d8e183c Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:02:58 +0530 Subject: [PATCH 05/45] Updated filename --- .../binary_tree/{max_sum_BST.py => maximum_sum_bst.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename data_structures/binary_tree/{max_sum_BST.py => maximum_sum_bst.py} (99%) diff --git a/data_structures/binary_tree/max_sum_BST.py b/data_structures/binary_tree/maximum_sum_bst.py similarity index 99% rename from data_structures/binary_tree/max_sum_BST.py rename to data_structures/binary_tree/maximum_sum_bst.py index a07b91c86c06..f1ef2d00ba6c 100644 --- a/data_structures/binary_tree/max_sum_BST.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -58,6 +58,6 @@ def solver(node) -> int: if __name__ == "__main__": + import doctest - doctest.testmod() From e8f1d4e5ef6a1f61c6064ff511a98e8906b2a7b6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 16:33:43 +0000 Subject: [PATCH 06/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index f1ef2d00ba6c..a07b91c86c06 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -58,6 +58,6 @@ def solver(node) -> int: if __name__ == "__main__": - import doctest + doctest.testmod() From 21dc6d922ba73c5d2b74a44358955f08b0c08730 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:09:59 +0530 Subject: [PATCH 07/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index a07b91c86c06..c687e3156371 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -58,6 +58,6 @@ def solver(node) -> int: if __name__ == "__main__": - import doctest + import doctest doctest.testmod() From 0aea0f2129d6d663c40c57c882fe185e2c98c4f7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 16:40:30 +0000 Subject: [PATCH 08/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index c687e3156371..a07b91c86c06 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -58,6 +58,6 @@ def solver(node) -> int: if __name__ == "__main__": - import doctest + doctest.testmod() From 0a58155f52363916f5ce740d21c2ee4a01be42ec Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:21:21 +0530 Subject: [PATCH 09/45] Updated the code --- data_structures/binary_tree/maximum_sum_bst.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index c687e3156371..115b3d2db9ad 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,5 +1,5 @@ class TreeNode: - def __init__(self, val=0, left=None, right=None) -> None: + def __init__(self, val: int=0, left: TreeNode=None, right: TreeNode=None) -> None: self.val = val self.left = left self.right = right @@ -38,6 +38,9 @@ def max_sum_bst(root: TreeNode) -> int: ans = 0 def solver(node) -> int: + """ + Returns the maximum sum by making recursive calls + """ nonlocal ans if not node: From 25a7ee6c948b38be3115c990c0dd9f4ccf6cb5ce Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 16:51:54 +0000 Subject: [PATCH 10/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 143c0df4d94d..4d29fd9874b5 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,5 +1,7 @@ class TreeNode: - def __init__(self, val: int=0, left: TreeNode=None, right: TreeNode=None) -> None: + def __init__( + self, val: int = 0, left: TreeNode = None, right: TreeNode = None + ) -> None: self.val = val self.left = left self.right = right From f42bca1a890b2cb73f504dfc7cec2c323eb2bcbd Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:27:42 +0530 Subject: [PATCH 11/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 143c0df4d94d..1379e4eb4adf 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,5 +1,5 @@ class TreeNode: - def __init__(self, val: int=0, left: TreeNode=None, right: TreeNode=None) -> None: + def __init__(self, val: int=0, left: 'TreeNode' | None=None, right: 'TreeNode' | None =None) -> None: self.val = val self.left = left self.right = right From 6179a8a128b67c94ab7bc49e24276f70e34c29ad Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 17:07:05 +0000 Subject: [PATCH 12/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 5839007da51d..b20873d9e8f3 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,6 +1,10 @@ class TreeNode: - - def __init__(self, val: int=0, left: 'TreeNode' | None=None, right: 'TreeNode' | None =None) -> None: + def __init__( + self, + val: int = 0, + left: "TreeNode" | None = None, + right: "TreeNode" | None = None, + ) -> None: self.val = val self.left = left self.right = right From 3f3caff0bd5baec3d0a1ada38669e4502db3fa79 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:43:35 +0530 Subject: [PATCH 13/45] Updated the code --- .../binary_tree/maximum_sum_bst.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index b20873d9e8f3..0a89d58687d7 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,14 +1,11 @@ -class TreeNode: - def __init__( - self, - val: int = 0, - left: "TreeNode" | None = None, - right: "TreeNode" | None = None, - ) -> None: - self.val = val - self.left = left - self.right = right +from dataclasses import dataclass +from typing import Optional, Tuple +@dataclass +class TreeNode: + val: int = 0 + left: Optional['TreeNode'] = None + right: Optional['TreeNode'] = None def max_sum_bst(root: TreeNode) -> int: """ @@ -42,7 +39,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans = 0 - def solver(node) -> int: + def solver(node: Optional[TreeNode]) -> Tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls """ From ad04568d09fb15637e886d34005d6995c41727de Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 17:14:06 +0000 Subject: [PATCH 14/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 0a89d58687d7..81cc729144bc 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,11 +1,13 @@ from dataclasses import dataclass from typing import Optional, Tuple + @dataclass class TreeNode: val: int = 0 - left: Optional['TreeNode'] = None - right: Optional['TreeNode'] = None + left: Optional["TreeNode"] = None + right: Optional["TreeNode"] = None + def max_sum_bst(root: TreeNode) -> int: """ From 07e9c5039e316d8346578fecbc180666ee28ebdc Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 22:47:32 +0530 Subject: [PATCH 15/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 0a89d58687d7..899f0d39c62b 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,5 +1,6 @@ from dataclasses import dataclass -from typing import Optional, Tuple +from typing import Optional + @dataclass class TreeNode: @@ -39,7 +40,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans = 0 - def solver(node: Optional[TreeNode]) -> Tuple[bool, int, int, int]: + def solver(node: Optional[TreeNode]) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls """ From ff65aa35a0f10656fe2cb5794dd12356971b0cc8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 17:18:05 +0000 Subject: [PATCH 16/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index b2c3746046fc..922db872d585 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -2,7 +2,6 @@ from typing import Optional - @dataclass class TreeNode: val: int = 0 From c2f438d82751a6aa550e18dac7d9b8545acc4a60 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:05:40 +0530 Subject: [PATCH 17/45] Updated the code --- data_structures/binary_tree/maximum_sum_bst.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index b2c3746046fc..3a8b345351d3 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,7 +1,8 @@ from dataclasses import dataclass from typing import Optional - - +import sys +INT_MIN = -sys.maxsize + 1 +INT_MAX = sys.maxsize - 1 @dataclass class TreeNode: @@ -40,16 +41,19 @@ def max_sum_bst(root: TreeNode) -> int: >>> print(max_sum_bst(t3)) 20 """ - ans = 0 + ans: int = 0 def solver(node: Optional[TreeNode]) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls + >>> t1 = TreeNode(1) + >>> print(solver(t1)) + 1 """ nonlocal ans if not node: - return True, float("inf"), float("-inf"), 0 # Valid BST, min, max, sum + return True, INT_MAX, INT_MIN, 0 # Valid BST, min, max, sum is_left_valid, min_left, max_left, sum_left = solver(node.left) is_right_valid, min_right, max_right, sum_right = solver(node.right) From 005205d19b71aa9a48cd04a669461a0dd3021205 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:16:20 +0530 Subject: [PATCH 18/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index e7fc98a1bf91..37aa34fd66e2 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,6 +1,6 @@ -from dataclasses import dataclass -from typing import Optional import sys +from dataclasses import dataclass + INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 @@ -9,8 +9,8 @@ @dataclass class TreeNode: val: int = 0 - left: Optional["TreeNode"] = None - right: Optional["TreeNode"] = None + left: "TreeNode" | None = None + right: "TreeNode" | None = None def max_sum_bst(root: TreeNode) -> int: @@ -45,7 +45,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: Optional[TreeNode]) -> tuple[bool, int, int, int]: + def solver(node: TreeNode) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From b93234627d36bbc62ea5a8749cd25eba1083b487 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:21:59 +0530 Subject: [PATCH 19/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 37aa34fd66e2..67777561afbb 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,4 +1,5 @@ import sys + from dataclasses import dataclass From 3aea6311026d650922ddc304728a2156f363eb55 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:22:56 +0530 Subject: [PATCH 20/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 67777561afbb..b366fe5616e3 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,6 +1,8 @@ +from dataclasses import dataclass + import sys -from dataclasses import dataclass + INT_MIN = -sys.maxsize + 1 From 55dd178759b38c6a65ac6f6edba31faa1c9181c4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 17:53:26 +0000 Subject: [PATCH 21/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index b366fe5616e3..022cc5d71be2 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -3,8 +3,6 @@ import sys - - INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 From e62a5fbf36d0fb2ce2b49d1196249e872bc29c74 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:36:57 +0530 Subject: [PATCH 22/45] Updated the code --- data_structures/binary_tree/maximum_sum_bst.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index b366fe5616e3..9230ab06051d 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,9 +1,5 @@ -from dataclasses import dataclass - import sys - - - +from dataclasses import dataclass INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 From cf1e92a6f572a9e10d3ac770b29a05e4845c9d27 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:40:50 +0530 Subject: [PATCH 23/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 37aa34fd66e2..9230ab06051d 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,7 +1,6 @@ import sys from dataclasses import dataclass - INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 From 318fd2238aba574e7c06738c2d7633b056fee0b4 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:42:51 +0530 Subject: [PATCH 24/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 9230ab06051d..f8d178401ca0 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: TreeNode) -> tuple[bool, int, int, int]: + def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From f1c5829f78ddcc77b0964713a498e35c277c9b21 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:48:03 +0530 Subject: [PATCH 25/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index f8d178401ca0..3f32e46adab6 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: + def solver(node: 'TreeNode' | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From cbc759b0eefd42fd86b613f323e11f5c7e394ddf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 18:18:55 +0000 Subject: [PATCH 26/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 3f32e46adab6..e643f43fb2ba 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: 'TreeNode' | None) -> tuple[bool, int, int, int]: + def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From 450f10ac1f3294f8917955e07561c950e1115467 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:49:46 +0530 Subject: [PATCH 27/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 3f32e46adab6..862dd24a3200 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: 'TreeNode' | None) -> tuple[bool, int, int, int]: + def solver(node: "TreeNode") -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From 906527fad600f3557c54b4643ae7e0bb1c00d620 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 18:21:14 +0000 Subject: [PATCH 28/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 53c77537b92b..862dd24a3200 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,6 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: "TreeNode") -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls From 50aec6732ae6a111299ecb964a59d054fbeb3486 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:52:26 +0530 Subject: [PATCH 29/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 53c77537b92b..efaf1c0fc6d6 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -12,7 +12,7 @@ class TreeNode: right: "TreeNode" | None = None -def max_sum_bst(root: TreeNode) -> int: +def max_sum_bst(root: "TreeNode" | None) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -45,7 +45,7 @@ def max_sum_bst(root: TreeNode) -> int: ans: int = 0 - def solver(node: "TreeNode") -> tuple[bool, int, int, int]: + def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From e10b4e3410961d7701b6f30f63650cb1a37c6f82 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Sun, 6 Oct 2024 23:54:35 +0530 Subject: [PATCH 30/45] updated --- data_structures/binary_tree/maximum_sum_bst.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index efaf1c0fc6d6..f38a54f7d94a 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -45,6 +45,7 @@ def max_sum_bst(root: "TreeNode" | None) -> int: ans: int = 0 + def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls From 48524732ac0bac57b188c2fcff2ae8297d56b582 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 18:25:46 +0000 Subject: [PATCH 31/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 0c7f15cc1c3b..bf4d624933a5 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -44,7 +44,6 @@ def max_sum_bst(root: "TreeNode" | None) -> int: """ ans: int = 0 - def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls @@ -55,7 +54,7 @@ def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: nonlocal ans if not node: - return True, INT_MAX, INT_MIN, 0 # Valid BST, min, max, sum + return True, INT_MAX, INT_MIN, 0 # Valid BST, min, max, sum is_left_valid, min_left, max_left, sum_left = solver(node.left) is_right_valid, min_right, max_right, sum_right = solver(node.right) From 136cdec1af981ec4b9f5e1039b24827a91818268 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 11:58:25 +0530 Subject: [PATCH 32/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 0c7f15cc1c3b..80f11c9c0b4a 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -8,11 +8,11 @@ @dataclass class TreeNode: val: int = 0 - left: "TreeNode" | None = None - right: "TreeNode" | None = None + left: "TreeNode" = None + right: "TreeNode" = None -def max_sum_bst(root: "TreeNode" | None) -> int: +def max_sum_bst(root: TreeNode) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -45,7 +45,7 @@ def max_sum_bst(root: "TreeNode" | None) -> int: ans: int = 0 - def solver(node: "TreeNode" | None) -> tuple[bool, int, int, int]: + def solver(node: TreeNode) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From 40d865346ec467ebd08a00f76205283e9b608c42 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 12:00:42 +0530 Subject: [PATCH 33/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 3531ed2e21c9..dd60920d6fb4 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -8,8 +8,8 @@ @dataclass class TreeNode: val: int = 0 - left: "TreeNode" = None - right: "TreeNode" = None + left: "TreeNode" | None = None + right: "TreeNode" | None = None def max_sum_bst(root: TreeNode) -> int: From 15347551784de6aa7232879a9f4652ab77e1dd4a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 06:31:28 +0000 Subject: [PATCH 34/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index dd60920d6fb4..9230ab06051d 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -8,7 +8,7 @@ @dataclass class TreeNode: val: int = 0 - left: "TreeNode" | None = None + left: "TreeNode" | None = None right: "TreeNode" | None = None From 923a30732a5fccca066198684989dc59da643d24 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 12:09:16 +0530 Subject: [PATCH 35/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index dd60920d6fb4..24d0cd75a522 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -12,7 +12,7 @@ class TreeNode: right: "TreeNode" | None = None -def max_sum_bst(root: TreeNode) -> int: +def max_sum_bst(root: TreeNode | None) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode) -> int: """ ans: int = 0 - def solver(node: TreeNode) -> tuple[bool, int, int, int]: + def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From ac0709d0cdaf2eaeef0535d19f1a75d4163117f2 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 12:37:00 +0530 Subject: [PATCH 36/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index cd7a899aa607..5f0d08e2a58b 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -8,8 +8,8 @@ @dataclass class TreeNode: val: int = 0 - left: "TreeNode" | None = None - right: "TreeNode" | None = None + left: 'TreeNode' = None + right: 'TreeNode' = None def max_sum_bst(root: TreeNode | None) -> int: From e74d24e7e3c8f7abfeec4d9a7137e591fd497ba5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 07:07:51 +0000 Subject: [PATCH 37/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 5f0d08e2a58b..e1bddd2a2bd0 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -8,8 +8,8 @@ @dataclass class TreeNode: val: int = 0 - left: 'TreeNode' = None - right: 'TreeNode' = None + left: "TreeNode" = None + right: "TreeNode" = None def max_sum_bst(root: TreeNode | None) -> int: From af00d57f06a904063da293d029e06ad3c78b9db6 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 12:38:48 +0530 Subject: [PATCH 38/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 5f0d08e2a58b..f1062cbbfd3f 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -12,7 +12,7 @@ class TreeNode: right: 'TreeNode' = None -def max_sum_bst(root: TreeNode | None) -> int: +def max_sum_bst(root: TreeNode ) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses @@ -44,7 +44,7 @@ def max_sum_bst(root: TreeNode | None) -> int: """ ans: int = 0 - def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: + def solver(node: TreeNode) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1) From bae1df8af9d22d5e0f0aece806c2c7f9e53bda05 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 07:10:02 +0000 Subject: [PATCH 39/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 2b718b39b0c2..da205b527fca 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -12,7 +12,7 @@ class TreeNode: right: "TreeNode" = None -def max_sum_bst(root: TreeNode ) -> int: +def max_sum_bst(root: TreeNode) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses From c2a62d998f2b69d2d953a76b8ffcfe110b7abe98 Mon Sep 17 00:00:00 2001 From: 1227haran Date: Mon, 7 Oct 2024 13:10:11 +0530 Subject: [PATCH 40/45] Updated code --- data_structures/binary_tree/maximum_sum_bst.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 2b718b39b0c2..842ba166a100 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,5 +1,6 @@ import sys from dataclasses import dataclass +from typing import Optional INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 @@ -8,8 +9,8 @@ @dataclass class TreeNode: val: int = 0 - left: "TreeNode" = None - right: "TreeNode" = None + left: Optional['TreeNode'] = None + right: Optional['TreeNode'] = None def max_sum_bst(root: TreeNode ) -> int: From cb2d96e11e0a8a35770868c66a64a02791745185 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 07:40:42 +0000 Subject: [PATCH 41/45] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/binary_tree/maximum_sum_bst.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 8dbe9f50e284..4644f4f1c211 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -9,8 +9,8 @@ @dataclass class TreeNode: val: int = 0 - left: Optional['TreeNode'] = None - right: Optional['TreeNode'] = None + left: Optional["TreeNode"] = None + right: Optional["TreeNode"] = None def max_sum_bst(root: TreeNode) -> int: From b2ebccda20be842e8eca5d14e1636e22df124bfb Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 7 Oct 2024 10:20:45 +0200 Subject: [PATCH 42/45] Apply suggestions from code review --- data_structures/binary_tree/maximum_sum_bst.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 4644f4f1c211..9d913b86b63e 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,6 +1,5 @@ import sys from dataclasses import dataclass -from typing import Optional INT_MIN = -sys.maxsize + 1 INT_MAX = sys.maxsize - 1 @@ -9,8 +8,8 @@ @dataclass class TreeNode: val: int = 0 - left: Optional["TreeNode"] = None - right: Optional["TreeNode"] = None + left: TreeNode | None = None + right: TreeNode | None = None def max_sum_bst(root: TreeNode) -> int: From d290a9c1ffad587b970ed8792246a8d6cd36df17 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 7 Oct 2024 10:22:13 +0200 Subject: [PATCH 43/45] Update maximum_sum_bst.py --- data_structures/binary_tree/maximum_sum_bst.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 9d913b86b63e..e781a8c9ad07 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys from dataclasses import dataclass From 95c9f15bf3211b7c66cb7c9060226327d5fbd938 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 7 Oct 2024 10:26:21 +0200 Subject: [PATCH 44/45] def max_sum_bst(root: TreeNode | None) -> int: --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index e781a8c9ad07..5779b9396c50 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -14,7 +14,7 @@ class TreeNode: right: TreeNode | None = None -def max_sum_bst(root: TreeNode) -> int: +def max_sum_bst(root: TreeNode | None) -> int: """ The solution traverses a binary tree to find the maximum sum of keys in any subtree that is a Binary Search Tree (BST). It uses From 619aef8e64c2000f5925490af6759dbd38965f2f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 7 Oct 2024 10:32:48 +0200 Subject: [PATCH 45/45] def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: --- data_structures/binary_tree/maximum_sum_bst.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/maximum_sum_bst.py b/data_structures/binary_tree/maximum_sum_bst.py index 5779b9396c50..7dadc7b95920 100644 --- a/data_structures/binary_tree/maximum_sum_bst.py +++ b/data_structures/binary_tree/maximum_sum_bst.py @@ -46,7 +46,7 @@ def max_sum_bst(root: TreeNode | None) -> int: """ ans: int = 0 - def solver(node: TreeNode) -> tuple[bool, int, int, int]: + def solver(node: TreeNode | None) -> tuple[bool, int, int, int]: """ Returns the maximum sum by making recursive calls >>> t1 = TreeNode(1)