Skip to content

Commit e9c7bac

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent c29a1e0 commit e9c7bac

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

sorts/tree_sort.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
from collections.abc import Iterator
33
from dataclasses import dataclass
44

5+
56
@dataclass
67
class Node:
78
"""Node of a Binary Search Tree (BST) for sorting."""
9+
810
val: int
911
left: Node | None = None
1012
right: Node | None = None
@@ -14,10 +16,10 @@ def __iter__(self) -> Iterator[int]:
1416
# Traverse left subtree first (smaller values)
1517
if self.left:
1618
yield from self.left
17-
19+
1820
# Current node value
1921
yield self.val
20-
22+
2123
# Traverse right subtree last (larger values)
2224
if self.right:
2325
yield from self.right
@@ -41,13 +43,13 @@ def insert(self, val: int) -> None:
4143
def tree_sort(arr: list[int] | tuple[int, ...]) -> tuple[int, ...]:
4244
"""
4345
Sort sequence using Binary Search Tree (BST) traversal.
44-
46+
4547
Args:
4648
arr: Input sequence (list or tuple of integers)
47-
49+
4850
Returns:
4951
Tuple of sorted integers
50-
52+
5153
Examples:
5254
>>> tree_sort([])
5355
()
@@ -67,16 +69,16 @@ def tree_sort(arr: list[int] | tuple[int, ...]) -> tuple[int, ...]:
6769
# Handle empty input immediately
6870
if not arr:
6971
return ()
70-
72+
7173
# Convert to list for uniform processing
7274
items = list(arr)
73-
75+
7476
# Initialize BST root with first element
7577
root = Node(items[0])
76-
78+
7779
# Insert remaining items into BST
7880
for item in items[1:]:
7981
root.insert(item)
80-
82+
8183
# Convert BST traversal to sorted tuple
8284
return tuple(root)

0 commit comments

Comments
 (0)