Skip to content

Commit 3a9f57c

Browse files
authored
feat: add swift implementation to lcof2 problem: No.056 (doocs#3085)
1 parent 4614207 commit 3a9f57c

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

lcof2/剑指 Offer II 056. 二叉搜索树中两个节点之和/README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,52 @@ function find(root: TreeNode | null, k: number, nodes: Set<number>): boolean {
208208
}
209209
```
210210

211+
#### Swift
212+
213+
```swift
214+
/* class TreeNode {
215+
* var val: Int
216+
* var left: TreeNode?
217+
* var right: TreeNode?
218+
* init() {
219+
* self.val = 0
220+
* self.left = nil
221+
* self.right = nil
222+
* }
223+
* init(_ val: Int) {
224+
* self.val = val
225+
* self.left = nil
226+
* self.right = nil
227+
* }
228+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
229+
* self.val = val
230+
* self.left = left
231+
* self.right = right
232+
* }
233+
* }
234+
*/
235+
236+
class Solution {
237+
private var nodes: Set<Int> = []
238+
239+
func findTarget(_ root: TreeNode?, _ k: Int) -> Bool {
240+
nodes = []
241+
return find(root, k)
242+
}
243+
244+
private func find(_ root: TreeNode?, _ k: Int) -> Bool {
245+
guard let node = root else {
246+
return false
247+
}
248+
if nodes.contains(k - node.val) {
249+
return true
250+
}
251+
nodes.insert(node.val)
252+
return find(node.left, k) || find(node.right, k)
253+
}
254+
}
255+
```
256+
211257
<!-- tabs:end -->
212258

213259
<!-- solution:end -->
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/* class TreeNode {
2+
* var val: Int
3+
* var left: TreeNode?
4+
* var right: TreeNode?
5+
* init() {
6+
* self.val = 0
7+
* self.left = nil
8+
* self.right = nil
9+
* }
10+
* init(_ val: Int) {
11+
* self.val = val
12+
* self.left = nil
13+
* self.right = nil
14+
* }
15+
* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
16+
* self.val = val
17+
* self.left = left
18+
* self.right = right
19+
* }
20+
* }
21+
*/
22+
23+
class Solution {
24+
private var nodes: Set<Int> = []
25+
26+
func findTarget(_ root: TreeNode?, _ k: Int) -> Bool {
27+
nodes = []
28+
return find(root, k)
29+
}
30+
31+
private func find(_ root: TreeNode?, _ k: Int) -> Bool {
32+
guard let node = root else {
33+
return false
34+
}
35+
if nodes.contains(k - node.val) {
36+
return true
37+
}
38+
nodes.insert(node.val)
39+
return find(node.left, k) || find(node.right, k)
40+
}
41+
}

0 commit comments

Comments
 (0)