]> ruin.nu Git - germs.git/blobdiff - src/componenttree.cpp
make the componenttree a minimal unoriented tree
[germs.git] / src / componenttree.cpp
index 8390ed2557b35a41e63112c365b8999c73e9264d..9059b473b5464e0263963d85f844275155f2df29 100644 (file)
@@ -67,3 +67,20 @@ ComponentTree::ComponentTree(const std::vector<Component>& components) : _root(0
 
 ComponentTree::~ComponentTree(){
 }
+
+void ComponentTree::makeUnoriented(){
+       removeOriented(&_root);
+}
+
+void ComponentTree::removeOriented(Node* n){
+       for (vector<ComponentTree::Node*>::iterator c = n->_children.begin();
+                       c != n->_children.end(); /*empty*/){
+               removeOriented(*c);
+               if ((*c)->_children.size() == 0 && ((*c)->_comp.i2 == 0 || (*c)->_comp.sign == 0)){
+                       delete *c;
+                       n->_children.erase(c);
+               }else{
+                       ++c;
+               }
+       }
+}