donmike25 icon

in lab algo all questions

donmike25 | PRO | 12/14/13 01:45:34 PM UTC | 0 ⭐ | 195 👁️ | Never ⏰ | []
C |

5.79 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdlib.h>
 
typedef struct tNode
{
    int data;
    struct tNode *left;
    struct tNode *right;
}tnode;
 
 
tnode *initNode(int);
void tGrow();
void task(tnode*);
tnode *root;
 
void tGrow(){
 
 
    root = initNode(0);
    root->left = initNode(1);
    root->right = initNode(2);
    root->left->left = initNode(3);
    root->left->right = initNode(4);
    root->left->left->left = initNode(5);
    root->left->left->right = initNode(6);
    root->left->right->left = initNode(7);
    root->left->right->right = initNode(8);
    root->right->left = initNode(9);
    root->right->right = initNode(10);
    root->right->left->left = initNode(11);
    root->right->left->right = initNode(12);
    root->right->right->left = initNode(13);
    root->right->right->right = initNode(14);
 
 
 
}
tnode *initNode(int data){
    tnode *temp;
    temp = (tnode *)malloc(sizeof(tnode));
    temp->data = data;
    temp->right = NULL;
    temp->left = NULL;
    return temp;
 
}
 
 
 
 
 
//**question 1**
/*int sum=0;
 
void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
int main()
{
 
 
    tGrow();
    task(root);
    
 
 
    return 0;
 
}
 
void preorder(tnode *node){
 
 
    if (node)
    {
        sum =sum+ node->data;
        preorder(node->left);
        preorder(node->right);
 
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        sum += node->data;
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        
        sum += node->data;
        inorder(node->right);
 
    }
 
 
 
 
 
}
void task(tnode* total){
 
    inorder(total);
    printf("Sum of all values : %d\n", sum);
}*/
 
 
 
//**question 2***//
 
/*void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
 
 
 
void preorder(tnode *node){
 
 
    if (node)
    {
        if (node->data == 2)
            printf("hello\t");
        else
        {
 
            printf("%d\t", node->data);
        }
        preorder(node->left);
        preorder(node->right);
 
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        if (node->data == 2)
            printf("hello\t");
        else
        {
 
            printf("%d\t", node->data);
        }
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        if (node->data == 2)
            printf("hello\t");
        else
        {
 
            printf("%d\t", node->data);
        }
        
        inorder(node->right);
 
    }
 
 
 
 
 
}
void task(tnode* total){
    printf("Inorder traversal: ");
    inorder(total);
 
}
 
 
int main()
{
 
 
 
    
 
 
        tGrow();
        task(root);
 
 
 
        
 
}*/
 
 
//**question 3 **//
/*void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
 
 
 
 
 
void preorder(tnode *node){
 
 
    if (node)
    {
        if (node->data % 2 != 0)
            printf("%d\t", node->data);
        else
        
 
            preorder(node->left);
            preorder(node->right);
        
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        if (node->data % 2 != 0)
            printf("%d\t", node->data);
    
 
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        if (node->data % 2 != 0)
            printf("%d\t", node->data);
        else
        inorder(node->right);
 
    }
 
}
 
 
    void task(tnode* total){
        printf("Postorder traversal (odd numbers only):");
        postorder(total);
 
    }
 
    int main()
    {
 
 
 
 
 
 
        tGrow();
        task(root);
 
 
 
 
 
    }*/
 
//** question 4 **//
 
 
/*int occu = 0;
 
 
 
void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
 
 
 
 
 
void preorder(tnode *node){
 
 
    if (node)
    {
        if (node->data == 2)
            occu++;
        else
 
 
            preorder(node->left);
        preorder(node->right);
 
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        if (node->data == 2)
            occu++;
 
 
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        if (node->data == 2)
            occu++;
        else
            inorder(node->right);
 
    }
 
}
 
 
void task(tnode* total){
    
    postorder(total);
    printf("No. of occurrences: %d\n", occu);
}
int main()
{
 
 
 
 
 
 
    tGrow();
    task(root);
 
 
 
 
 
}*/
 
//**question 5 **
 
 
/*void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
 
 
 
 
 
void preorder(tnode *node){
 
 
    if (node)
    {
        if (node->data == 2)
            node->data = -1;
        
 
        printf("%d\t", node->data);
            preorder(node->left);
        preorder(node->right);
 
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        if (node->data == 2)
            node->data = -1;
        printf("%d\t", node->data);
 
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        if (node->data == 2)
            node->data = -1;
        
            printf("%d\t", node->data);
            inorder(node->right);
 
    }
 
}
 
 
void task(tnode* total){
    printf("Preorder traversal:");
    postorder(total);
    
}
 
 
int main()
{
 
 
 
 
 
 
    tGrow();
    task(root);
 
 
 
 
 
}*/
 
int odd, even;
void inorder(tnode*);
void postorder(tnode*);
void preorder(tnode*);
 
 
 
 
 
void preorder(tnode *node){
 
 
    if (node)
    {
        if (node->data % 2 == 0)
            even++;
        else
            odd++;
        
 
    
        preorder(node->left);
        preorder(node->right);
 
    }
 
 
}
 
 
 
void postorder(tnode *node){
 
 
    if (node)
    {
        postorder(node->left);
        postorder(node->right);
        if (node->data % 2 == 0)
            even++;
        else
            odd++;
 
 
 
    }
 
 
}
 
void inorder(tnode *node){
 
 
    if (node)
    {
        inorder(node->left);
        if (node->data % 2 == 0)
            even++;
        else
            odd++;
 
 
        inorder(node->right);
 
    }
 
}
 
 
void task(tnode* total){
    
    preorder(total);
    printf("Total no.of odd data : %d\n", odd);
    printf("Total no.of even data : %d\n", even);
 
}
 
 
int main()
{
 
 
 
 
 
 
    tGrow();
    task(root);
 
 
 
 
 
}

Comments