二叉树刷题 Go语言
二叉树刷题-Go语言
问题描述:
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
解题思路:
直接用递归中序遍历
代码:
-
错误示例:
func inorderTraversal(root *TreeNode) []int{ valueList := make([]int, 0)//每次都会初始化一个,最后返回的切片中只有一个值 if root == nil { return valueList } MidTraversal(root.Left) valueList = append(valueList, root.Val) MidTraversal(root.Right) return valueList }
-
解决办法,闭包
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func inorderTraversal(root *TreeNode) []int { if root == nil{ return []int{} } res := make([]int,0,10) var inorder func(r *TreeNode) inorder = func(r *TreeNode){ if r == nil{ return } inorder(r.Left) res = append(res,r.Val) inorder(r.Right) } inorder(root) return res }