From c2270da43aae2c1d5c12e425b9ae39462ffe87a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D1=80=D1=8C=D1=8F=20=D0=A2=D0=BE=D1=80=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0?= Date: Fri, 12 Dec 2025 17:12:40 +0300 Subject: [PATCH] test 2 --- TestWorks/Test2.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 TestWorks/Test2.py diff --git a/TestWorks/Test2.py b/TestWorks/Test2.py new file mode 100644 index 0000000..750c4e0 --- /dev/null +++ b/TestWorks/Test2.py @@ -0,0 +1,67 @@ +class NodeHeap: + def __init__(self, key, value): + self.priority = key + self.value = value + self.degree = 0 # колво детей узлов + self.parent = None + self.child = None # left + self.sibling = None # right + + +class Heap: + def __init__(self): + self.head = None + + def is_empty(self): + return self.head is None + + def insert(self, key, value): + new_heap = Heap() + new_node = NodeHeap(key, value) + new_heap.head = new_node + self.merge(new_heap) + + return new_node + + def get_minimum(self): + if not self.head: + return None + min_node = self.head + cur = self.head.sibling + while cur: + if cur.key < min_node.key: + min_node = cur + cur = cur.sibling + + return min_node.key + + def merge(self, other_head): + if not self: + return other_head + if not other_head: + return self + result = None + curr = None + p1 = self + p2 = other_head + if p1.degree <= p2.degree: + result = p1 + p1 = p1.sibling + else: + result = p2 + p2 = p2.sibling + curr = result + while p1 and p2: + if p1.degree <= p2.degree: + curr.sibling = p1 + p1 = p1.sibling + else: + curr.sibling = p2 + p2 = p2.sibling + curr = curr.sibling + if p1: + curr.sibling = p1 + else: + curr.sibling = p2 + + return result