给定一个二叉树,返回他的后序遍历的序列。
后序遍历是值按照 左节点->右节点->根节点 的顺序的遍历。
数据范围:二叉树的节点数量满足
,二叉树节点的值满足
,树的各节点的值各不相同
样例图
package main
import . "nc_tools"
func postorderTraversal(root *TreeNode) (ans []int) {
traversal(root, &ans)
return
}
func traversal(node *TreeNode, ans *[]int) {
if node != nil {
traversal(node.Left, ans)
traversal(node.Right, ans)
*ans = append(*ans, node.Val)
}
}
func postorderTraversal( root *TreeNode ) []int {
// write code here
var res []int
postorder(&res, root)
return res
}
func postorder(list *[]int, root *TreeNode){
if root == nil{
return
}
postorder(list, root.Left)
postorder(list, root.Right)
*list = append(*list, root.Val)
} func postorderTraversal( root *TreeNode ) []int {
result := make([]int, 0)
var def func(root *TreeNode)
def = func(root *TreeNode) {
if root == nil {
return
}
def(root.Left)
def(root.Right)
result = append(result, root.Val)
}
def(root)
return result
// write code here
} package main
// import "fmt"
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
*/
func postorderTraversal( root *TreeNode ) []int {
// write code here
dfs(root)
return p[:cnt]
}
var p [100]int
var cnt int
func dfs(root *TreeNode) {
if root == nil {
return
}
dfs(root.Left)
dfs(root.Right)
p[cnt] = root.Val
cnt++
}