00001 /* Tree 02 00002 */ 00003 00004 #ifndef aglowavTree02_hh 00005 #define aglowavTree02_hh 00006 00007 #include "basics/exceptions.hh" 00008 #include "cluster/tree03.hh" 00009 #include "aglowav/tree.hh" 00010 00011 namespace aglowav { 00012 00013 // **************************************************************** Tree02 ** 00014 00018 template<class BiClNode> 00019 class Tree02 : public BiTree<BiClNode>, public cluster::Tree<BiClNode> { 00020 00021 public: 00023 typedef ClstBiTreeTraits<BiClNode> Traits; 00024 typedef typename Traits::F F; 00025 00030 Tree02(const concepts::Space<F>& spc, const cluster::BBall<F>& ball); 00031 00033 ~Tree02() {destructor_(root_); delete root_;} 00034 00036 inline uint nclst() const {return nclst_;} 00038 inline uint nleaf() const {return nlf_;} 00040 inline const BiClNode* root() const {return root_;} 00041 00042 private: 00044 BiClNode* constructor_(BiClNode* lfset, 00045 cluster::CebyCenter<BiClNode>& cby); 00047 void destructor_(BiClNode* nd); 00048 00050 uint nlf_; 00052 uint nclst_; 00054 BiClNode* root_; 00055 }; 00056 00057 } // namespace aglowav 00058 00059 #endif // aglowavTree02_hh