36 lines
577 B
Go
36 lines
577 B
Go
// Package q114 implements a solution for https://leetcode.com/problems/flatten-binary-tree-to-linked-list/
|
|
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
|