-
Notifications
You must be signed in to change notification settings - Fork 0
/
Node.java
95 lines (83 loc) · 2.62 KB
/
Node.java
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.util.ArrayList;
import java.util.HashSet;
public class Node {
public float value1, value2, tempValue;
public Node parent, left, center, right, tempNode;
Node(float value, Node parent) {
this.value1 = value;
this.left = this.center = this.right = null;
this.parent = parent;
}
Node(float value1, float value2, Node parent) {
this.value1 = value1;
this.value2 = value2;
this.left = this.center = this.right = null;
this.parent = parent;
}
Node(float value1, float value2, Node parent, Node left, Node center, Node right) {
this.value1 = value1;
this.value2 = value2;
this.parent = parent;
this.left = left;
this.center = center;
this.right = right;
}
public boolean isLeaf() {
return this.left == null && this.center == null && this.right == null;
}
public boolean isFull() {
return this.left != null && this.center != null && this.right != null;
}
public int getNumChilds() {
var counter = 0;
if (this.center != null) {
counter++;
}
if (this.left != null) {
counter++;
}
if (this.right != null) {
counter++;
}
return counter;
}
public void setBranchedNode(TwoThreeTree.Branch branch, Node node) {
switch (branch) {
case center:
this.center = node;
break;
case left:
this.left = node;
break;
case right:
this.right = node;
break;
}
}
public ArrayList<Float> getChildValues() {
var values = new HashSet<Float>();
if (this.left != null)
values.addAll(this.left.getChildValues());
if (this.center != null)
values.addAll(this.center.getChildValues());
if (this.right != null)
values.addAll(this.right.getChildValues());
if (this.isLeaf()) {
values.add(this.value1);
}
return new ArrayList<Float>(values);
}
public TwoThreeTree.Branch getChildBranch(Node child) {
var parent = child.parent;
if (parent.left.equals(child))
return TwoThreeTree.Branch.left;
if (parent.center.equals(child))
return TwoThreeTree.Branch.center;
if (parent.right.equals(child))
return TwoThreeTree.Branch.right;
return null;
}
public String printNode() {
return "N:(" + Double.toString(this.value1) + "," + Double.toString(this.value2) + ")";
}
}