Skip to content

Commit 1ceb911

Browse files
authored
Update tree_sort.py
1 parent e9c7bac commit 1ceb911

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

sorts/tree_sort.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from __future__ import annotations
2+
23
from collections.abc import Iterator
34
from dataclasses import dataclass
45

56

67
@dataclass
78
class Node:
89
"""Node of a Binary Search Tree (BST) for sorting."""
9-
1010
val: int
1111
left: Node | None = None
1212
right: Node | None = None
@@ -16,10 +16,10 @@ def __iter__(self) -> Iterator[int]:
1616
# Traverse left subtree first (smaller values)
1717
if self.left:
1818
yield from self.left
19-
19+
2020
# Current node value
2121
yield self.val
22-
22+
2323
# Traverse right subtree last (larger values)
2424
if self.right:
2525
yield from self.right
@@ -33,23 +33,22 @@ def insert(self, val: int) -> None:
3333
else:
3434
self.left.insert(val)
3535
# Values > current go to right subtree
36+
elif self.right is None:
37+
self.right = Node(val)
3638
else:
37-
if self.right is None:
38-
self.right = Node(val)
39-
else:
40-
self.right.insert(val)
39+
self.right.insert(val)
4140

4241

4342
def tree_sort(arr: list[int] | tuple[int, ...]) -> tuple[int, ...]:
4443
"""
4544
Sort sequence using Binary Search Tree (BST) traversal.
46-
45+
4746
Args:
4847
arr: Input sequence (list or tuple of integers)
49-
48+
5049
Returns:
5150
Tuple of sorted integers
52-
51+
5352
Examples:
5453
>>> tree_sort([])
5554
()
@@ -69,16 +68,16 @@ def tree_sort(arr: list[int] | tuple[int, ...]) -> tuple[int, ...]:
6968
# Handle empty input immediately
7069
if not arr:
7170
return ()
72-
71+
7372
# Convert to list for uniform processing
7473
items = list(arr)
75-
74+
7675
# Initialize BST root with first element
7776
root = Node(items[0])
78-
77+
7978
# Insert remaining items into BST
8079
for item in items[1:]:
8180
root.insert(item)
82-
81+
8382
# Convert BST traversal to sorted tuple
8483
return tuple(root)

0 commit comments

Comments
 (0)