Go with map
\ntype FindElements struct {\n    m map[int]struct{}\n}\n\nfunc Constructor(root *TreeNode) FindElements {\n    m := make(map[int]struct{})\n    \n    var recov
```\ntype FindElements struct {\n    m map[int]struct{}\n}\n\nfunc Constructor(root *TreeNode) FindElements {\n    m := make(map[int]struct{})\n    \n    var recoverTree func(*TreeNode, int)\n    recoverTree = func(root *TreeNode, val int)  {\n        if root == nil {\n            return\n        }\n        \n        m[val] = struct{}{}\n        \n        recoverTree(root.Left, 2*val+1)\n        recoverTree(root.Right, 2*val+2)\n    }\n    \n    recoverTree(root, 0)\n    \n    return FindElements {\n        m: m,\n    }\n}\n\n\nfunc (this *FindElements) Find(target int) bool {\n    if _, ok := this.m[target]; ok {\n        return true\n    }\n    \n    return false\n}\n\n```
['Recursion', 'Go']