我先上代码
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func Solution199(root *TreeNode) []int {
return dfs199(root, []int{})
}
func dfs199(root *TreeNode,ans []int)[]int{
if root == nil{
return ans
}
new := append(ans,root.Val)
right := dfs199(root.Right,new)
left := dfs199(root.Left,new)
fmt.Println(root.Val,":")
if root.Right != nil{
fmt.Println(root.Right.Val,right)
}
if root.Left != nil{
fmt.Println(root.Left.Val,left)
}
result := right
if len(left) > len(right){
result = append(result,left[len(right):]...)
}
fmt.Println(result)
return result
}
func main() {
root := &tree.TreeNode{
Val: 1,
Left: nil,
Right: &tree.TreeNode{
Val: 5,
Left: &tree.TreeNode{
Val: 3,
Left: &tree.TreeNode{
Val: 2,
Left: nil,
Right: nil,
},
Right: &tree.TreeNode{
Val: 4,
Left: nil,
Right: nil,
},
},
Right: nil,
},
}
fmt.Println(tree.Solution199(root))
}
我发现 当递归到 3 这个节点的时候,right 这个数组 通过 dfs199 函数递归后得到是 1534 ,但是当下一个 left 这个数组 通过 dfs199 函数递归后得到 1532 的时候,right 也会跟着变成 1532 这是为什么呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.