方法一:递归

  1. /**
  2. * Definition for a Node.
  3. * type Node struct {
  4. * Val int
  5. * Children []*Node
  6. * }
  7. */
  8. func preorder(root *Node) []int {
  9. if root == nil {
  10. return []int{}
  11. }
  12. //加入当前节点的值
  13. ret := []int{root.Val}
  14. //遍历所有子节点为根的树并加入结果中
  15. for i := 0; i < len(root.Children); i++ {
  16. ret = append(ret, preorder(root.Children[i])...)
  17. }
  18. return ret
  19. }