Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void twoDtree::prune(double pct, int tol){
- prune(root, pct, tol, root->avg);
- }
- void twoDtree::prune(Node* node, double pct, int tol, const RGBAPixel& rootAvg) {
- if (node!= NULL) {
- double numThis = (double) numNodesWithinTolerance(node, tol, rootAvg);
- double numLeafNodes = (double) countLeaves(node);
- double totalTolerances = numThis/numLeafNodes;
- numLeafMap->erase(node);
- if (totalTolerances >= pct)
- removeSubTrees(node);
- else {
- if (node->left != NULL && node->right != NULL) {
- prune(node->left, pct, tol, node->avg);
- prune (node->right, pct, tol, node->avg);
- }
- }
- }
- }
- int twoDtree::numNodesWithinTolerance(Node* node, int tol, const RGBAPixel& rootAvg) {
- if (node != NULL) {
- if (node->left == NULL && node->right == NULL) {
- if (withinTolerance(node->avg, rootAvg, tol))
- return 1;
- return 0;
- }
- int total = numNodesWithinTolerance(node->left, tol, rootAvg) + numNodesWithinTolerance(node->right, tol, rootAvg);
- return total;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement