隨便寫個獲取二叉樹后續遍歷的值,結果讓我很疑惑
初始方式
func postorderTraversal(root *TreeNode) []int {
res:=make([]int,0)
if root==nil{
return res
}
dfs(root,res)
return res
}
func dfs(link *TreeNode,nums []int){
if link==nil{
return
}
dfs(link.Left,nums)
dfs(link.Right,nums)
nums = append(nums,link.Val)
}
結果返回的res為空

不得已改寫為以下方式,不傳遞切片進入函數,或者使用全局變量
unc postorderTraversal(root *TreeNode) []int {
res:=make([]int,0)
if root==nil{
return res
}
var dfs func(link *TreeNode)
dfs = func(link *TreeNode){
if link==nil{
return
}
dfs(link.Left)
dfs(link.Right)
res = append(res,link.Val)
}
dfs(root)
return res
}
不禁疑惑,不是說切片底層為數組指針嗎,為什么傳入函數之后append增加失敗
