import logging logger = logging.getLogger(__name__) # logging.basicConfig(level=logging.DEBUG) import time def timeMS(func, *args, **kwargs): startTime = time.perf_counter() result = func(*args, **kwargs) endTime = time.perf_counter() elapsedMS = (endTime - startTime) * 1000 # Convert to milliseconds print(f"{func.__name__} took {elapsedMS:.2f} ms") return result from utils.memory_array import MemoryArray from utils.memory_cell import MemoryCell from utils.literal import Literal from utils.constants import MAX_VALUE from utils.memory_manager import MemoryManager from utils.memory_range import mrange from vorlesung.L05_binaere_baeume.bin_tree import BinaryTree from vorlesung.L05_binaere_baeume.bin_tree_node import BinaryTreeNode def analyze_complexity(fn, sizes): """ Analysiert die Komplexität einer maximalen Teilfolgenfunktion. :param max_sequence_func: Die Funktion, die analysiert wird. :param sizes: Eine Liste von Eingabegrößen für die Analyse. """ for size in sizes: MemoryManager.purge() # Speicher zurücksetzen random_array = MemoryArray.create_random_array(size, -100, 100) fn(random_array, Literal(0), random_array.length().pred()) MemoryManager.save_stats(size) MemoryManager.plot_stats(["cells", "adds", "compares", "reads", "writes"]) lineAccumulator = [] # its not getting forwarded so we can not work with return. I will try glob vars to append the string # Signature: def print_node(node, indent=0, line=None): def clbk_graphvizify(toDecorate : BinaryTreeNode, indent=0, line=None): global lineAccumulator lineAccumulator.append(f"n_{id(toDecorate)} [label={toDecorate.value}]") # Create edges for nodes with Child (use l - r) if toDecorate.left is not None: lineAccumulator.append(f"n_{id(toDecorate)} -> n_{id(toDecorate.left)}") if toDecorate.right is not None: lineAccumulator.append(f"n_{id(toDecorate)} -> n_{id(toDecorate.right)}") def graphvizify() -> str: # Header result = "digraph {\n\t" # Body result += ('\n\t'.join(str(item) for item in lineAccumulator)) # Foot result += "\n}" return result if __name__ == '__main__': tree = BinaryTree() values = [5, 3, 7, 2, 4, 6, 5, 8] binTreeData = MemoryArray.create_array_from_file("data/seq0.txt") for value in binTreeData: tree.insert(value) # for value in values: # tree.insert(value) tree.in_order_traversal(clbk_graphvizify) print(graphvizify())