/**
* Definition for a Node.
* type Node struct {
* Val int
* Children []*Node
* }
*/
func preorder(root *Node) []int {
var stack []int
if root == nil {
return stack
}
stack = append(stack, root.Val)
for _, child := range root.Children {
stack = append(stack, preorder(child)...)
}
return stack
}