from random import seed, randint class List: def __init__(self, value): self.value = value self.next = None def __str__(self): head = self result = str() while head != None: result += f'[{head.value}] -> ' head = head.next return result def createList(): seed(0) l = h = List(randint(1,10)) for i in range(10): h.next = List(randint(1,10)) h = h.next return l linkedList = createList() anotherList = createList() # Vypište celý seznam # Zjistěte délku seznamu # Sečtěte čísla v seznamu # Převeďte seznam na pole # Najděte maximum v seznamu # Najděte maximum i minimum jedním průchodem # Přidejte prvek na konec seznamu # Otočte seznam # Přidejte nový seznam na konec # Vytvořte nový seznam sečtením hodnot dvou seznamů # Sečtěte čísla na lichých a sudých pozicicích zvlášť (výsledkem je dvojice) class Tree: def __init__(self, value): self.value = value self.temp = None self.left = None self.right = None def createTree(): l = [randint(1,10) for i in range(15)] value = l.pop() tree = Tree(value) stack = [(tree, 3)] while stack != []: actual, depth = stack.pop() if depth == 0: continue actual.left = Tree(l.pop()) actual.right = Tree(l.pop()) stack.append((actual.left, depth - 1)) stack.append((actual.right, depth - 1)) return tree binaryTree = createTree() anotherTree = createTree() # Vypište strom inorder # Sečtěte čísla ve stromě # Zrcadlově strom otočte # Zjistěte nejvyšší hloubku stromu # Převeďte strom na pole (preorder) # Vytvořte strom z pole (preorder) # Najděte maximum ve stromě # Najděte maximum i minimum jedním průchodem # Pro každý uzel spočtěte lokální minimum a maximum v jeho podstromě # Přidejte nové patro stromu # Vytvořte nový strom sečtením hodnot ze dvou stromů # Sečtěte čísla v lichých a sudých patrech zvlášť (výsledkem je dvojice) # Z každého patra stromu vytvořte seznam a vraťte seznam seznamů kódující strom (pro spojení seznamů smíte použít cykly) def createArray(): return [randint(1,10) for i in range(10)] array = createArray() anotherArray = createArray() arrayOfTuples = [(randint(1,10), randint(1,10)) for i in range(10)] # Vypište celé pole # Zjistěte délku pole # Sečtěte čísla v poli # Najděte maximum v poli # Najděte maximum i minimum jedním průchodem # Přidejte prvek na konec pole # Otočte pole # Přidejte nové pole na konec # Vytvořte nové pole sečtením hodnot dvou polí # Sečtěte čísla na lichých a sudých pozicicích zvlášť (výsledkem je dvojice) # Převeďte pole dvojic na dvojici polí # Zdvojnásobte délku pole (stejné prvy budou vedle sebe) # Zdvojnásobte délku pole (pole bude dvakrát za sebou) """Další část""" # Vytvořte seznam všech seznamů čísel 1 až 5 délky x # Vytvořte seznam všech seznamů čísel 1,0,-1 délky x # Vytvořte seznam všech rozdělení slova na 3 podslova # Ze seznamu délky x vytvořte všechny možné seznamy odebráním dvou prvků """ Další část""" # Vytvořte seznam všech seznamů čísel 1 až 5 se součtem x # Vytvořte seznam všech seznamů čísel 1,0,-1 délky x a součtu y