forked from hofmannol/AlgoDatSoSe25
Compare commits
No commits in common. "c3826412343df03680b8edc36941849c308aa027" and "b12e39952d7338dc792ab3b7a6e933a3ea194f7c" have entirely different histories.
c382641234
...
b12e39952d
@ -1,26 +0,0 @@
|
|||||||
from utils.memory_manager import MemoryManager
|
|
||||||
from utils.memory_array import MemoryArray
|
|
||||||
from utils.literal import Literal
|
|
||||||
from vorlesung.L05_binaere_baeume.bin_tree import BinaryTree
|
|
||||||
|
|
||||||
def analyze_complexity(sizes):
|
|
||||||
"""
|
|
||||||
Analysiert die Komplexität
|
|
||||||
|
|
||||||
:param sizes: Eine Liste von Eingabegrößen für die Analyse.
|
|
||||||
"""
|
|
||||||
for size in sizes:
|
|
||||||
MemoryManager.purge() # Speicher zurücksetzen
|
|
||||||
tree = BinaryTree()
|
|
||||||
random_array = MemoryArray.create_random_array(size, -100, 100)
|
|
||||||
for i in range(size-1):
|
|
||||||
tree.insert(int(random_array[Literal(i)]))
|
|
||||||
MemoryManager.reset()
|
|
||||||
tree.insert(int(random_array[Literal(size-1)]))
|
|
||||||
MemoryManager.save_stats(size)
|
|
||||||
|
|
||||||
MemoryManager.plot_stats(["cells", "compares"])
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
sizes = range(1, 1001, 2)
|
|
||||||
analyze_complexity(sizes)
|
|
||||||
@ -1,6 +1,4 @@
|
|||||||
from vorlesung.L05_binaere_baeume.bin_tree_node import BinaryTreeNode
|
from vorlesung.L05_binaere_baeume.bin_tree_node import BinaryTreeNode
|
||||||
from utils.memory_manager import MemoryManager
|
|
||||||
from utils.memory_array import MemoryArray
|
|
||||||
from utils.project_dir import get_path
|
from utils.project_dir import get_path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
@ -16,24 +14,23 @@ class BinaryTree:
|
|||||||
|
|
||||||
def insert(self, value):
|
def insert(self, value):
|
||||||
self.size += 1
|
self.size += 1
|
||||||
value = self.new_node(value)
|
|
||||||
if self.root is None:
|
if self.root is None:
|
||||||
self.root = value
|
self.root = self.new_node(value)
|
||||||
return self.root, None
|
return self.root, None
|
||||||
else:
|
else:
|
||||||
current = self.root
|
current = self.root
|
||||||
while True:
|
while True:
|
||||||
if value < current:
|
if value < current.value:
|
||||||
if current.left:
|
if current.left:
|
||||||
current = current.left
|
current = current.left
|
||||||
else:
|
else:
|
||||||
current.left = value
|
current.left = self.new_node(value)
|
||||||
return current.left, current
|
return current.left, current
|
||||||
elif value >= current:
|
elif value >= current.value:
|
||||||
if current.right:
|
if current.right:
|
||||||
current = current.right
|
current = current.right
|
||||||
else:
|
else:
|
||||||
current.right = value
|
current.right = self.new_node(value)
|
||||||
return current.right, current
|
return current.right, current
|
||||||
else:
|
else:
|
||||||
return None, None
|
return None, None
|
||||||
@ -203,5 +200,3 @@ if __name__ == "__main__":
|
|||||||
tree.level_order_traversal(print_node)
|
tree.level_order_traversal(print_node)
|
||||||
print("\nTree structure traversal after deletion:")
|
print("\nTree structure traversal after deletion:")
|
||||||
tree.tree_structure_traversal(print_node)
|
tree.tree_structure_traversal(print_node)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user