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