Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- typedef struct node {
- int data;
- struct node *left;
- struct node *right;
- } node;
- node* createNode(int _data = 0, node* left = NULL,
- node* right = NULL){
- node* temp = new node;
- temp->data = _data;
- temp->left = left;
- temp->right = right;
- return temp;
- }
- node* createTree(){
- node *left, *right, *right2;
- left = createNode(3);
- right = createNode(7);
- left = createNode(10, left, right);
- right = createNode(20);
- right = createNode(30, left, right);
- left = createNode(5);
- right2 = createNode(15);
- left = createNode(20, left, right2);
- node* root = createNode(50, left, right);
- return root;
- }
- void destroyTree(node* root){
- if (!root) return;
- destroyTree(root->left);
- destroyTree(root->right);
- cout << root->data << endl;
- delete root;
- }
- int check(int num){
- for(int i = 2; i <= sqrt(num); i++)
- if (num % i == 0) return 0;
- return 1;
- }
- void preorder(node* root){
- if (root){
- preorder(root->left);
- int num = root -> data;
- if(check(num) == 1){
- cout << num << " ";
- }
- preorder(root->right);
- }
- }
- int height(node* root){
- if (!root) return -1;
- else return 1 + max(height(root->left),
- height(root->right));
- }
- int leafCount(node* root){
- if (!root->left && !root->right) return 1;
- else return leafCount(root->left) + leafCount(root->right);
- }
- int main(){
- node* root = createTree();
- cout << height(root) << endl;
- cout << leafCount(root) << endl;
- preorder(createTree());
- destroyTree(root);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment