public static void Main()
var n1 = new TreeNode(1, new TreeNode(2, new TreeNode(3), new TreeNode(4)), new TreeNode(5, null, new TreeNode(6)));
static void PreOrderTraversal(TreeNode node) {
Console.Write("{0} -> ", node.val);
if (node.left != null) PreOrderTraversal(node.left);
if (node.right != null) PreOrderTraversal(node.right);
static void Flatten(TreeNode root) {
if (root == null || (root.left == null && root.right == null)) return;
while(curr.right != null) {
if (root.right != null) Flatten(root.right);
public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {