1def flatten(root):
2 current = root
3
4 while current:
5 if current.left:
6 # Find rightmost node in left subtree
7 predecessor = current.left
8 while predecessor.right:
9 predecessor = predecessor.right
10
11 # Connect predecessor's right to current's right
12 predecessor.right = current.right
13
14 # Move left subtree to right
15 current.right = current.left
16 current.left = None
17
18 # Move to next node
19 current = current.right