114. Flatten Binary Tree to Linked List
https://leetcode.com/problems/flatten-binary-tree-to-linked-list
Python
class Solution:
    def flatten(self, root: Optional[TreeNode]) -> None:
        if root is None:
            return None
        # 1. Flattern both sub-trees
        self.flatten(root.left)
        self.flatten(root.right)
        # 2. Left subtree as right tree
        origin_left = root.left
        origin_right = root.right
        root.left = None
        root.right = origin_left
        # 3. Attach origin right tree to the eof right tree
        cur = root
        while cur.right:
            cur = cur.right
        cur.right = origin_right