Leetcode Note: Go - Two Sum IV Input Is a BST

Two Sum IV - Input is a BST - LeetCode
https://leetcode.com/problems/two-sum-iv-input-is-a-bst/

  • Go 言語で取り組んだメモ

所感

  • int k で与えられた数値を binary tree の node を 2つ 加算することで算出できるかを bool で return する

回答

Clean Go Solution. Beats 100% - LeetCode Discuss
https://leetcode.com/problems/two-sum-iv-input-is-a-bst/discuss/1421844/Clean-Go-Solution.-Beats-100

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func findTarget(root *TreeNode, k int) bool {
	return dfs(root, k, map[int]bool{})
}

func dfs(root *TreeNode, k int, m map[int]bool) bool {
	if root == nil {
		return false
	}

	if m[k-root.Val] {
		return true
	}

	m[root.Val] = true

	return dfs(root.Left, k, m) || dfs(root.Right, k, m)
}
  • 再帰で map を渡して走査する
  • map で数値のステートを管理する