113.路径总和 II

80 阅读1分钟

题目:
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。
解法: 试试不copy list用默认测试用例会错误。

var ans [][]int

func pathSum(root *TreeNode, targetSum int) [][]int {
	ans = make([][]int, 0)
	list := make([]int, 0)
	getPathSum(root, targetSum, list)
	return ans
}

func getPathSum(root *TreeNode, targetSum int, list []int) {
	if root == nil {
		return
	}
	list = append(list, root.Val)
	if root.Left == nil && root.Right == nil && root.Val == targetSum {
		l := make([]int, len(list))
		copy(l, list)
		// fmt.Println("append", list)
		ans = append(ans, l)
		return
	}

	getPathSum(root.Left, targetSum-root.Val, list)
	getPathSum(root.Right, targetSum-root.Val, list)
	return
}