Bridges-C++  3.4.2
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 
10 namespace 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:31
void setKey(const K &k)
Definition: BSTElement.h:81
void setLeft(BSTElement *l)
Definition: BSTElement.h:104
K getKey() const
Definition: BSTElement.h:73
virtual BSTElement * getRight() override
Definition: BSTElement.h:111
virtual const string getElementRepresentation() const override
Definition: BSTElement.h:134
void setRight(BSTElement *r)
Definition: BSTElement.h:127
virtual BSTElement * getLeft() override
Definition: BSTElement.h:88
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 KdTreeElement * getRight() override
Get right child.
Definition: KdTreeElement.h:156
void setPartitioner(const K &p)
Set partitioning dimension to "dim".
Definition: KdTreeElement.h:126
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
virtual const KdTreeElement * getLeft() const override
Get left child - constant version.
Definition: KdTreeElement.h:141
K getPartitioner() const
Get partitioner value.
Definition: KdTreeElement.h:118
virtual const string getDStype() const override
Definition: KdTreeElement.h:81
virtual KdTreeElement * getLeft() override
Get left child.
Definition: KdTreeElement.h:133
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
virtual const KdTreeElement * getRight() const override
Get right child - Constant version.
Definition: KdTreeElement.h:164
void setRight(KdTreeElement *r)
Sets right child to "r".
Definition: KdTreeElement.h:172
std::string JSONencode(const T &d)
Definition: JSONutil.h:37
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:51
const string COMMA
Definition: DataStructure.h:50
const string QUOTE
Definition: DataStructure.h:49