Double Linked List Connected Components
[node #0] -><-[node#1] -><-[node#2] -><-[node#3]
node[] nodes = {ref_to_node#0, ref_to_node#2, ref_to_node#3};def dll_n_connected(refs):
visited = set()
blocks = 0
# references assumed to be unique
for ref in refs:
visited.add(ref)
if (not ref.left and not ref.right in visited)
blocks += 1
elif (not ref.right and not ref.left in visited)
blocks += 1
elif not (ref.left in visited or ref.right in visited)
blocks += 1
return blocksLast updated