package q114 type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func fl(node *TreeNode) (head, tail *TreeNode) { if node == nil { return nil, nil } head, tail = node, node lhead, ltail := fl(node.Left) rhead, rtail := fl(node.Right) if lhead != nil { node.Left = nil node.Right = lhead tail = ltail } if rhead != nil { tail.Right = rhead tail = rtail } return } func flatten(root *TreeNode) { fl(root) } var _ = flatten