Bridges-C++ 3.5.0-dev2-1-ge3e57bf
Bridges(C++ API)
KdTreeElement.h
Go to the documentation of this file.
1#ifndef KD_TREE_ELEMENT_H
2#define KD_TREE_ELEMENT_H
3
4#include <sstream>
5
6#include "BSTElement.h" //string, sstream, using std
7
8#include <JSONutil.h>
9
10namespace bridges {
11 namespace datastructure {
39 template <typename K, typename E>
40 class KdTreeElement : public BSTElement<K, E> {
41 private:
42 int dimension = 0; // dimension, in the range [0..k-1]
43 float thickness = 0; // thickness of partitioning lines
44 public:
58 KdTreeElement(const K& k, int dim, int th,
59 const KdTreeElement* l, const KdTreeElement* r,
60 const E& val = E(), const string& lab = string())
61 : BSTElement<K, E>(k, l, r, val, lab),
62 thickness(th), dimension(dim) {
63 }
75 KdTreeElement(const K& k, int dim, int th = 0,
76 const E& val = E(), const string& lab = string())
77 : BSTElement<K, E>(k, nullptr, nullptr, val, lab),
78 dimension(dim), thickness(th) {
79 }
81 virtual const string getDStype() const override {
82 return "KdTree";
83 }
88 int getDimension() const {
89 return dimension;
90 }
96 void setDimension(const int& dim) {
97 dimension = dim;
98 }
103 float getThickness() const {
104 return thickness;
105 }
111 void setThickness(const float& th) {
112 thickness = th;
113 }
118 K getPartitioner() const {
119 return this->getKey();
120 }
126 void setPartitioner(const K& p) {
127 this->setKey();
128 }
133 virtual KdTreeElement* getLeft() override {
134 return static_cast<KdTreeElement*>(BSTElement<K, E>::getLeft());
135 }
141 virtual const KdTreeElement* getLeft() const override {
142 return static_cast<const KdTreeElement*>(BSTElement<K, E>::getLeft());
143 }
151 }
156 virtual KdTreeElement* getRight() override {
157 return static_cast<KdTreeElement*>(BSTElement<K, E>::getRight());
158 }
164 virtual const KdTreeElement* getRight() const override {
165 return static_cast<const KdTreeElement*>(BSTElement<K, E>::getRight());
166 }
174 }
175 protected:
179 virtual const string getElementRepresentation() const override {
182 stringstream dim_str, thck_str;
183 dim_str << dimension;
184 thck_str << thickness;
185 return json.insert(
186 json.size() - 1,
187 COMMA + QUOTE + "dimension" + QUOTE + COLON +
188 JSONencode(dim_str.str()) +
189 COMMA + QUOTE + "thickness" + QUOTE + COLON +
190 JSONencode(thck_str.str())
191 );
192 }
193 }; //end of KdtreeElement class
194 }
195}//end of bridges namespace
196#endif
This class can be used to create binary search tree elements, derived from BinTreeElement.
Definition: BSTElement.h:30
void setKey(const K &k)
Definition: BSTElement.h:80
void setLeft(BSTElement *l)
Definition: BSTElement.h:103
K getKey() const
Definition: BSTElement.h:72
virtual const string getElementRepresentation() const override
Definition: BSTElement.h:133
void setRight(BSTElement *r)
Definition: BSTElement.h:126
virtual BSTElement * getRight() override
Definition: BSTElement.h:110
virtual BSTElement * getLeft() override
Definition: BSTElement.h:87
This class can be used to create K-d Tree elements, derived from BSTElement. K-D trees can be thought...
Definition: KdTreeElement.h:40
int getDimension() const
Get Dimension of the partition.
Definition: KdTreeElement.h:88
void setLeft(KdTreeElement *l)
Sets left child to "l".
Definition: KdTreeElement.h:149
virtual const KdTreeElement * getRight() const override
Get right child - Constant version.
Definition: KdTreeElement.h:164
virtual KdTreeElement * getLeft() override
Get left child.
Definition: KdTreeElement.h:133
void setPartitioner(const K &p)
Set partitioning dimension to "dim".
Definition: KdTreeElement.h:126
virtual KdTreeElement * getRight() override
Get right child.
Definition: KdTreeElement.h:156
virtual const string getElementRepresentation() const override
get kd tree element representation as JSON string
Definition: KdTreeElement.h:179
KdTreeElement(const K &k, int dim, int th=0, const E &val=E(), const string &lab=string())
Definition: KdTreeElement.h:75
KdTreeElement(const K &k, int dim, int th, const KdTreeElement *l, const KdTreeElement *r, const E &val=E(), const string &lab=string())
Definition: KdTreeElement.h:58
K getPartitioner() const
Get partitioner value.
Definition: KdTreeElement.h:118
virtual const string getDStype() const override
Definition: KdTreeElement.h:81
virtual const KdTreeElement * getLeft() const override
Get left child - constant version.
Definition: KdTreeElement.h:141
void setDimension(const int &dim)
Set partitioning dimension to "dim".
Definition: KdTreeElement.h:96
void setThickness(const float &th)
Set partitioning dimension to "dim".
Definition: KdTreeElement.h:111
float getThickness() const
Get thickness of the partition.
Definition: KdTreeElement.h:103
void setRight(KdTreeElement *r)
Sets right child to "r".
Definition: KdTreeElement.h:172
std::string JSONencode(const T &d)
Definition: JSONutil.h:38
these methods convert byte arrays in to base64 codes and are used in BRIDGES to represent the color a...
Definition: alltypes.h:4
const string COLON
Definition: DataStructure.h:52
const string COMMA
Definition: DataStructure.h:51
const string QUOTE
Definition: DataStructure.h:50