Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int tree :: f(tree_node *root, int k)
- {
- if(!root)
- return 0;
- return count_on_lvl_less_k(root,k)+f(root->left,k)+f(root->right,k);
- }
- void tree :: f4(tree_node *root, int *a, int level)
- {
- if(!root)
- return;
- a[level]++;
- f4(root->left, a,level+1);
- f4(root->right, a,level+1);
- }
- int tree :: count_on_lvl_less_k(tree_node *root, int k)
- {
- int *a;
- int lvl=0, count_lvl = depth(root);
- if(!root)
- return 0;
- a = new int [count_lvl+1];
- for(lvl=0; lvl<count_lvl; lvl++)
- a[lvl] = 0;
- f4(root,a,0);
- for(lvl=0; lvl<count_lvl; lvl++)
- {
- if(a[lvl] > k)
- {
- delete a;
- return 0;
- }
- }
- delete a;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement