int main() { int x = 1; Tree<int>* tree = new Tree<int>(NULL,x,NULL); x = 2; Tree<int>* r = new Tree<int>(NULL,x,NULL); x = 3 ; Tree<int>* l = new Tree<int>(NULL,x,NULL); x = 4 ; Tree<int>* ll = new Tree<int>(NULL,x,NULL); x = 5; Tree<int>* rl = new Tree<int>(NULL,x,NULL); x = 6; Tree<int>* lr = new Tree<int>(NULL,x,NULL); x = 7; Tree<int>* rr = new Tree<int>(NULL,x,NULL); r->setLeftTree(rl); l->setLeftTree(ll); r->setRightTree(rr); l->setRightTree(lr); tree->setRightTree(r); tree->setLeftTree(l); int count =0 ; countLeafNode(tree,count); cout << "number of leaf nodes = " << count << endl; return 0; }
void countLeafNode(const Tree<T>* root, int & count) { if(NULL != root) { cout << "Analyzing " << root->getData() << endl; if(NULL == root->getLeftTree() && NULL == root->getRightTree()) { count++; cout << "increasing count.." ; } if( NULL != root->getLeftTree()) countLeafNode(root->getLeftTree(),count); if( NULL != root->getRightTree()) countLeafNode(root->getRightTree(),count); } }
int countLeafNode(node_t* node) { int count; if (!node) { count = 0; } else if (!node->leftChild && !node->rightChild) { count = 1; } else { count = countLeafNode(node->leftChild) + countLeafNode(node->rightChild); } return count; }
int testCountLeafNode(tree_t* tree) { double runTime; time_t startTime = 0, endTime = 0; if (!tree) { return -1; } startTime = clock(); printf("리프노드의 갯수는 %d개 입니다.\n", countLeafNode(tree->root)); endTime = clock(); runTime = (double)(endTime - startTime)/(CLOCKS_PER_SEC); printf("걸린 시간 : %g 초\n", runTime); return 0; }