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

Function get_distrib

data_structures/binary_tree/distribute_coins.py:106–129  ·  view source on GitHub ↗

>>> get_distrib(None) namedtuple("CoinsDistribResult", "0 2")

(node: TreeNode | None)

Source from the content-addressed store, hash-verified

104
105 # Main calculation
106 def get_distrib(node: TreeNode | None) -> CoinsDistribResult:
107 """
108 >>> get_distrib(None)
109 namedtuple("CoinsDistribResult", "0 2")
110 """
111
112 if node is None:
113 return CoinsDistribResult(0, 1)
114
115 left_distrib_moves, left_distrib_excess = get_distrib(node.left)
116 right_distrib_moves, right_distrib_excess = get_distrib(node.right)
117
118 coins_to_left = 1 - left_distrib_excess
119 coins_to_right = 1 - right_distrib_excess
120
121 result_moves = (
122 left_distrib_moves
123 + right_distrib_moves
124 + abs(coins_to_left)
125 + abs(coins_to_right)
126 )
127 result_excess = node.data - coins_to_left - coins_to_right
128
129 return CoinsDistribResult(result_moves, result_excess)
130
131 return get_distrib(root)[0]
132

Callers 1

distribute_coinsFunction · 0.85

Calls 1

CoinsDistribResultClass · 0.85

Tested by

no test coverage detected