+
+size_t ComponentTree::countLeaves(){
+ size_t leaves = countLeaves(_root);
+ if (_root->_children.size() < 2 && _root->_comp.sign != 0){
+ ++leaves;
+ }
+ return leaves;
+}
+
+size_t ComponentTree::countLeaves(Node* n){
+ if (n != _root && n->_children.empty()){
+ return 1;
+ }
+ size_t leaves = 0;
+ for (vector<Node*>::iterator c = n->_children.begin();
+ c != n->_children.end(); ++c){
+ leaves += countLeaves(*c);
+ }
+ return leaves;
+}