-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathTwoSumBinaryTree.java
More file actions
76 lines (64 loc) · 1.7 KB
/
TwoSumBinaryTree.java
File metadata and controls
76 lines (64 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package Trees;
import java.util.Stack;
/**
* Author - archit.s
* Date - 07/11/18
* Time - 1:15 PM
*/
public class TwoSumBinaryTree {
public int t2Sum(TreeNode A, int B) {
Stack<TreeNode> s1 = new Stack<>();
Stack<TreeNode> s2 = new Stack<>();
int v1 = 0, v2 = 0;
boolean done1 = false, done2 = false;
TreeNode cur1 = A, cur2 = A;
while(true){
while(!done1){
if(cur1!=null){
s1.push(cur1);
cur1 = cur1.left;
}
else{
if(s1.empty()){
done1 = true;
}
else{
cur1 = s1.pop();
v1 = cur1.val;
cur1 = cur1.right;
done1 = true;
}
}
}
while(!done2){
if(cur2!=null){
s2.push(cur2);
cur2 = cur2.right;
}
else{
if(s2.empty()){
done2 = true;
}
else{
cur2 = s2.pop();
v2 = cur2.val;
cur2 = cur2.left;
done2 = true;
}
}
}
if((v1!=v2) && (v1+v2 == B)){
return 1;
}
else if(v1+v2<B){
done1 = false;
}
else if(v1+v2>B){
done2 = false;
}
if(v1 >= v2){
return 0;
}
}
}
}