package main type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func main() { } func flatten(root *TreeNode) { var helper func(root *TreeNode) []int helper = func(root *TreeNode) []int { if root == nil { return []int{} } tmp := make([]int, 0) tmp = append(tmp, root.Val) tmp = append(tmp, helper(root.Left)...) tmp = append(tmp, helper(root.Right)...) return tmp } res := helper(root) cur := root for i := 0; i < len(res); i++ { if i == 0 { cur.Left = nil continue } cur.Left = nil tmpNode := &TreeNode{ Val: res[i], Left: nil, Right: nil, } cur.Right = tmpNode cur = tmpNode } }