mirror of
https://github.com/iritmaximus/tira.git
synced 2026-10-12 19:13:47 +03:00
65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
import random
|
|
import time
|
|
|
|
|
|
class Node:
|
|
def __init__(self, value):
|
|
self.value = value
|
|
self.left = None
|
|
self.right = None
|
|
|
|
|
|
class TreeSet:
|
|
def __init__(self):
|
|
self.root = None
|
|
self.max_depth = -1
|
|
|
|
def add(self, value):
|
|
max_depth = 0
|
|
|
|
if not self.root:
|
|
self.root = Node(value)
|
|
self.max_depth += 1
|
|
return
|
|
|
|
node = self.root
|
|
while True:
|
|
if node.value == value:
|
|
break
|
|
max_depth += 1
|
|
if node.value > value:
|
|
if not node.left:
|
|
node.left = Node(value)
|
|
break
|
|
node = node.left
|
|
else:
|
|
if not node.right:
|
|
node.right = Node(value)
|
|
break
|
|
node = node.right
|
|
|
|
self.max_depth = max(self.max_depth, max_depth)
|
|
|
|
def height(self):
|
|
return self.max_depth
|
|
|
|
|
|
if __name__ == "__main__":
|
|
start = time.time()
|
|
numbers_smallest = TreeSet()
|
|
for i in range(1000):
|
|
numbers_smallest.add(i)
|
|
result_smallest = numbers_smallest.height()
|
|
end_smallest = time.time()
|
|
|
|
numbers_biggest = TreeSet()
|
|
for i in sorted([i for i in range(1000)], key=lambda x: random.random()):
|
|
numbers_biggest.add(i)
|
|
result_biggest = numbers_biggest.height()
|
|
end_biggest = time.time()
|
|
|
|
print(
|
|
f"Total: {end_biggest - start:.2f}, smallest: {end_smallest - start:.2f}, biggest: {end_biggest - end_smallest:.2f}"
|
|
)
|
|
print("Height smallest:", result_smallest, "Height biggest", result_biggest)
|