MCPcopy Create free account
hub / github.com/TheAlgorithms/Python / merge

Method merge

data_structures/heap/randomized_heap.py:38–73  ·  view source on GitHub ↗

Merge 2 nodes together. >>> rhn1 = RandomizedHeapNode(10) >>> rhn2 = RandomizedHeapNode(20) >>> RandomizedHeapNode.merge(rhn1, rhn2).value 10 >>> rhn1 = RandomizedHeapNode(20) >>> rhn2 = RandomizedHeapNode(10) >>> RandomizedHeapNode.

(
        root1: RandomizedHeapNode[T] | None, root2: RandomizedHeapNode[T] | None
    )

Source from the content-addressed store, hash-verified

36
37 @staticmethod
38 def merge(
39 root1: RandomizedHeapNode[T] | None, root2: RandomizedHeapNode[T] | None
40 ) -> RandomizedHeapNode[T] | None:
41 """
42 Merge 2 nodes together.
43
44 >>> rhn1 = RandomizedHeapNode(10)
45 >>> rhn2 = RandomizedHeapNode(20)
46 >>> RandomizedHeapNode.merge(rhn1, rhn2).value
47 10
48
49 >>> rhn1 = RandomizedHeapNode(20)
50 >>> rhn2 = RandomizedHeapNode(10)
51 >>> RandomizedHeapNode.merge(rhn1, rhn2).value
52 10
53
54 >>> rhn1 = RandomizedHeapNode(5)
55 >>> rhn2 = RandomizedHeapNode(0)
56 >>> RandomizedHeapNode.merge(rhn1, rhn2).value
57 0
58 """
59 if not root1:
60 return root2
61
62 if not root2:
63 return root1
64
65 if root1.value > root2.value:
66 root1, root2 = root2, root1
67
68 if random.choice([True, False]):
69 root1.left, root1.right = root1.right, root1.left
70
71 root1.left = RandomizedHeapNode.merge(root1.left, root2)
72
73 return root1
74
75
76class RandomizedHeap[T: bool]:

Callers 2

insertMethod · 0.45
popMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected