42 lines
659 B
Go
42 lines
659 B
Go
|
|
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
|
||
|
|
}
|
||
|
|
}
|