@@ -47,6 +47,8 @@ Target = 28
47
47
48
48
<!-- 这里可写通用的实现逻辑 -->
49
49
50
+ 用哈希表记录访问过的节点。
51
+
50
52
<!-- tabs:start -->
51
53
52
54
### ** Python3**
@@ -69,7 +71,7 @@ class Solution:
69
71
return True
70
72
nodes.add(node.val)
71
73
return find(node.left) or find(node.right)
72
-
74
+
73
75
nodes = set ()
74
76
return find(root)
75
77
```
@@ -79,7 +81,104 @@ class Solution:
79
81
<!-- 这里可写当前语言的特殊实现逻辑 -->
80
82
81
83
``` java
84
+ /**
85
+ * Definition for a binary tree node.
86
+ * public class TreeNode {
87
+ * int val;
88
+ * TreeNode left;
89
+ * TreeNode right;
90
+ * TreeNode() {}
91
+ * TreeNode(int val) { this.val = val; }
92
+ * TreeNode(int val, TreeNode left, TreeNode right) {
93
+ * this.val = val;
94
+ * this.left = left;
95
+ * this.right = right;
96
+ * }
97
+ * }
98
+ */
99
+ class Solution {
100
+ private Set<Integer > nodes;
101
+
102
+ public boolean findTarget (TreeNode root , int k ) {
103
+ nodes = new HashSet<> ();
104
+ return find(root, k);
105
+ }
106
+
107
+ private boolean find (TreeNode node , int k ) {
108
+ if (node == null ) {
109
+ return false ;
110
+ }
111
+ if (nodes. contains(k - node. val)) {
112
+ return true ;
113
+ }
114
+ nodes. add(node. val);
115
+ return find(node. left, k) || find(node. right, k);
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### ** C++**
121
+
122
+ ``` cpp
123
+ /* *
124
+ * Definition for a binary tree node.
125
+ * struct TreeNode {
126
+ * int val;
127
+ * TreeNode *left;
128
+ * TreeNode *right;
129
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
130
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
131
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
132
+ * };
133
+ */
134
+ class Solution {
135
+ public:
136
+ unordered_set<int > nodes;
137
+
138
+ bool findTarget(TreeNode* root, int k) {
139
+ return find(root, k);
140
+ }
141
+
142
+ bool find (TreeNode* node, int k) {
143
+ if (node == nullptr) {
144
+ return false;
145
+ }
146
+ if (nodes.count(k - node->val)) {
147
+ return true;
148
+ }
149
+ nodes.insert(node->val);
150
+ return find(node->left, k) || find(node->right, k);
151
+ }
152
+ };
153
+ ```
82
154
155
+ ### **Go**
156
+
157
+ ```go
158
+ /**
159
+ * Definition for a binary tree node.
160
+ * type TreeNode struct {
161
+ * Val int
162
+ * Left *TreeNode
163
+ * Right *TreeNode
164
+ * }
165
+ */
166
+ func findTarget(root *TreeNode, k int) bool {
167
+ nodes := make(map[int]bool)
168
+ var find func(node *TreeNode, k int) bool
169
+ find = func(node *TreeNode, k int) bool {
170
+ if node == nil {
171
+ return false
172
+ }
173
+ if nodes[k-node.Val] {
174
+ return true
175
+ }
176
+ nodes[node.Val] = true
177
+ return find(node.Left, k) || find(node.Right, k)
178
+ }
179
+ return find(root, k)
180
+
181
+ }
83
182
```
84
183
85
184
### ** ...**
0 commit comments