Flatten a binary tree into a linked list (preorder traversal)?
TreeNode prev = null;
void Flatten(TreeNode root) {
if (root == null) return;
Flatten(root.right);
Flatten(root.left);
root.right = prev;
root.left = null;
prev = root;
Explanation:
Postorder traversal (right-left-root) to flatten tree in place.