Given the root of a binary tree, flatten the tree into a 'linked list': - The 'linked list' should use the same TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null. - The 'linked list' should be in the same order as a pre-order traversal of the binary tree.
Example 1
Input: root = [1,2,5,3,4,null,6]
Output: [1,null,2,null,3,null,4,null,5,null,6]
Explanation: The preorder traversal of the tree is 1, 2, 3, 4, 5, 6. Flattening links these nodes in that order through right pointers, with every left pointer set to null.
Example 2
Input: root = []
Output: []
Explanation: The tree is empty, so there is nothing to flatten.
Example 3
Input: root = [0]
Output: [0]
Explanation: A single node is already a one-node list.
For each node with a left child, find the rightmost node of the left subtree and attach the right subtree there, then move left subtree to right.
Run checks all cases above. Submit evaluates all test cases.