Skip to content

Commit 4dd8655

Browse files
committed
653. Two Sum IV - Input is a BST
1 parent 048490f commit 4dd8655

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import scala.annotation.tailrec
2+
3+
class TreeNode(_value: Int = 0, _left: TreeNode = null, _right: TreeNode = null) {
4+
var value: Int = _value
5+
var left: TreeNode = _left
6+
var right: TreeNode = _right
7+
}
8+
9+
object Solution {
10+
def searchBST(root: TreeNode, node: TreeNode, value: Int): Boolean = {
11+
if (root == null || root.value == node.value) false
12+
else if (root.value == value) true
13+
else {
14+
if (value < root.value) searchBST(root.left, node, value)
15+
else searchBST(root.right, node, value)
16+
}
17+
}
18+
19+
def findTarget(root: TreeNode, k: Int): Boolean = {
20+
def search(node: TreeNode): Boolean = {
21+
if (node == null) false else {
22+
val w = k - node.value
23+
val found = searchBST(root, node, w)
24+
if (!found) {
25+
val foundRight = search(node.right)
26+
if (!foundRight) search(node.left)
27+
else foundRight
28+
} else found
29+
}
30+
}
31+
search(root)
32+
}
33+
}
34+
35+
val tree1 = new TreeNode(4,
36+
_left = new TreeNode(2,
37+
_left = new TreeNode(1),
38+
_right = new TreeNode(3),
39+
),
40+
_right = new TreeNode(7),
41+
)
42+
43+
Solution.findTarget(tree1, 10)

0 commit comments

Comments
 (0)