-
Notifications
You must be signed in to change notification settings - Fork 1
/
DecisionNode.cpp
83 lines (67 loc) · 1.66 KB
/
DecisionNode.cpp
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
#include "DecisionNode.h"
DecisionNode::DecisionNode() { this->left = this->right = NULL; }
DecisionNode::~DecisionNode()
{
delete this->left;
delete this->right;
}
DecisionNode::DecisionNode(int atr, int value, SplitData::SPLIT_VAL met) : attribute(atr), compareValue(value), method(met) { this->left = this->right = NULL; }
bool DecisionNode::isTerminal()
{
return false;
}
bool DecisionNode::compare(Data *data)
{
switch (method)
{
case SplitData::ATTRIBUTE:
return SplitData::Attribute::compare(data, attribute, compareValue);
case SplitData::COMPARISON:
return SplitData::Comparison::compare(data, attribute, compareValue);
case SplitData::COMBINATION:
return SplitData::Combination::compare(data, attribute, compareValue);
default:
return true;
}
}
char DecisionNode::getLabel()
{
return ' ';
}
string DecisionNode::toString()
{
string result;
stringstream ss;
ss << "[ Att[" << attribute << "] ";
// Compare
switch (method)
{
case SplitData::ATTRIBUTE:
ss << "= " << compareValue;
break;
case SplitData::COMPARISON:
ss << "< " << compareValue;
break;
case SplitData::COMBINATION:
ss << "in mask: " << compareValue;
break;
default:
ss << "none";
break;
}
ss << " ]";
getline(ss, result);
return result;
}
void DecisionNode::setCode(int _code)
{
code = _code;
}
string DecisionNode::getExport()
{
string result;
stringstream ss;
ss << isTerminal() << ' ' << attribute << ' ' << compareValue << ' ' << method;
getline(ss, result);
return result;
}