mirror of
https://github.com/iritmaximus/tira.git
synced 2026-10-12 19:13:47 +03:00
66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
class Node:
|
|
def __init__(self, value):
|
|
self.value = value
|
|
self.left = None
|
|
self.right = None
|
|
|
|
class TreeSet:
|
|
def __init__(self):
|
|
self.root = None
|
|
|
|
def add(self, value):
|
|
if not self.root:
|
|
self.root = Node(value)
|
|
return
|
|
|
|
node = self.root
|
|
while True:
|
|
if node.value == value:
|
|
return
|
|
if node.value > value:
|
|
if not node.left:
|
|
node.left = Node(value)
|
|
return
|
|
node = node.left
|
|
else:
|
|
if not node.right:
|
|
node.right = Node(value)
|
|
return
|
|
node = node.right
|
|
|
|
def min(self):
|
|
node = self.root
|
|
while True:
|
|
if node is None:
|
|
return None
|
|
if not node.left:
|
|
return node.value
|
|
node = node.left
|
|
|
|
def max(self):
|
|
node = self.root
|
|
while True:
|
|
if node is None:
|
|
return None
|
|
if not node.right:
|
|
return node.value
|
|
node = node.right
|
|
|
|
if __name__ == "__main__":
|
|
numbers = TreeSet()
|
|
|
|
print(numbers.min()) # None
|
|
print(numbers.max()) # None
|
|
|
|
numbers.add(3)
|
|
print(numbers.min()) # 3
|
|
print(numbers.max()) # 3
|
|
|
|
numbers.add(4)
|
|
print(numbers.min()) # 3
|
|
print(numbers.max()) # 4
|
|
|
|
numbers.add(1)
|
|
print(numbers.min()) # 1
|
|
print(numbers.max()) # 4
|