590. N叉树的后序遍历

image.png
返回其后序遍历: [5,6,3,2,4,1].

  1. type Node struct {
  2. Val int
  3. Children []*Node
  4. }
  5. func postorder(root *Node) []int {
  6. if root==nil{
  7. return nil
  8. }
  9. res :=make([]int,0)
  10. helper(root,&res)
  11. return res
  12. }
  13. func helper(root *Node,res *[]int){
  14. if root==nil{
  15. return
  16. }
  17. for _,v:=range root.Children{
  18. helper(v,res)
  19. }
  20. *res = append(*res,root.Val)
  21. }

image.png

迭代实现

  1. func postorder(root *Node) []int {
  2. if root==nil{
  3. return nil
  4. }
  5. stack := make([]*Node,0)
  6. stack = append(stack,root)
  7. res := make([]int,0)
  8. for len(stack)>0{
  9. node := stack[len(stack)-1]
  10. stack = stack[:len(stack)-1]
  11. res = append([]int{node.Val},res...)
  12. for i:=0;i<len(node.Children);i++{
  13. stack = append(stack,node.Children[i])
  14. }
  15. }
  16. return res
  17. }