145. 二叉树的后序遍历 简单

给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [3,2,1]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

代码参考:

package main

import "fmt"

func main() {
    root := &TreeNode{Val: 4}
    root.Left = &TreeNode{Val: 9}
    root.Right = &TreeNode{Val: 0}
    root.Left.Left = &TreeNode{Val: 5}
    root.Left.Right = &TreeNode{Val: 1}

    //    4
    //   / \
    //  9   0
    // / \
    // 5   1
    fmt.Println(postorderTraversal(root)) // [5 1 9 0 4]
}

func postorderTraversal(root *TreeNode) []int {
    var nums []int
    traverse(root, &nums)
    return nums
}

func traverse(root *TreeNode, nums *[]int) {
    if root == nil {
        return
    }
    traverse(root.Left, nums)
    traverse(root.Right, nums)
    *nums = append(*nums, root.Val)
}

// TODO
// iteration
最后编辑: kuteng  文档更新时间: 2021-06-05 10:16   作者:kuteng