Upload files to "DS/C/Lab/Shortcodes"
This commit is contained in:
		
							parent
							
								
									325008fe63
								
							
						
					
					
						commit
						4d3da88635
					
				
					 5 changed files with 465 additions and 0 deletions
				
			
		
							
								
								
									
										92
									
								
								DS/C/Lab/Shortcodes/BST.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								DS/C/Lab/Shortcodes/BST.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,92 @@
 | 
			
		|||
#include<stdio.h>
 | 
			
		||||
#include<stdlib.h>
 | 
			
		||||
 | 
			
		||||
typedef struct TreeNode {
 | 
			
		||||
    int d;
 | 
			
		||||
    struct TreeNode *l, *r;
 | 
			
		||||
} T;
 | 
			
		||||
 | 
			
		||||
T *c(int d) {
 | 
			
		||||
    T *n = malloc(sizeof(T));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    n->l = n->r = NULL;
 | 
			
		||||
    return n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
T *i(T *r, int d) {
 | 
			
		||||
    if (!r) return c(d);
 | 
			
		||||
    if (d < r->d) r->l = i(r->l, d);
 | 
			
		||||
    else if (d > r->d) r->r = i(r->r, d);
 | 
			
		||||
    return r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
T *f(T *r) {
 | 
			
		||||
    while (r->l) r = r->l;
 | 
			
		||||
    return r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
T *d(T *r, int k) {
 | 
			
		||||
    if (!r) return NULL;
 | 
			
		||||
    if (k < r->d) r->l = d(r->l, k);
 | 
			
		||||
    else if (k > r->d) r->r = d(r->r, k);
 | 
			
		||||
    else {
 | 
			
		||||
        if (!r->l) {
 | 
			
		||||
            T *t = r->r;
 | 
			
		||||
            free(r);
 | 
			
		||||
            return t;
 | 
			
		||||
        } else if (!r->r) {
 | 
			
		||||
            T *t = r->l;
 | 
			
		||||
            free(r);
 | 
			
		||||
            return t;
 | 
			
		||||
        }
 | 
			
		||||
        T *t = f(r->r);
 | 
			
		||||
        r->d = t->d;
 | 
			
		||||
        r->r = d(r->r, t->d);
 | 
			
		||||
    }
 | 
			
		||||
    return r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void t(T *r) {
 | 
			
		||||
    if (r) {
 | 
			
		||||
        t(r->l);
 | 
			
		||||
        printf("%d ", r->d);
 | 
			
		||||
        t(r->r);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int s(T *r, int k, int *p) {
 | 
			
		||||
    if (!r) return 0;
 | 
			
		||||
    int l = s(r->l, k, p);
 | 
			
		||||
    if (l) return l;
 | 
			
		||||
    if (++*p == k) return *p;
 | 
			
		||||
    return s(r->r, k, p);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    T *r = NULL;
 | 
			
		||||
    int c, v;
 | 
			
		||||
    while (1) {
 | 
			
		||||
        printf("\n1. Insert\n2. Delete\n3. Search\n4. Display\n5. Exit\n");
 | 
			
		||||
        scanf("%d", &c);
 | 
			
		||||
        if (c == 1) {
 | 
			
		||||
            scanf("%d", &v);
 | 
			
		||||
            r = i(r, v);
 | 
			
		||||
        } else if (c == 2) {
 | 
			
		||||
            scanf("%d", &v);
 | 
			
		||||
            r = d(r, v);
 | 
			
		||||
        } else if (c == 3) {
 | 
			
		||||
            scanf("%d", &v);
 | 
			
		||||
            int p = 0, f = s(r, v, &p);
 | 
			
		||||
            printf(f ? "Found at %d\n" : "Not found\n", f);
 | 
			
		||||
        } else if (c == 4) {
 | 
			
		||||
            t(r);
 | 
			
		||||
            printf("\n");
 | 
			
		||||
        } else if (c == 5) {
 | 
			
		||||
            break;
 | 
			
		||||
        } else {
 | 
			
		||||
            printf("Invalid\n");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    free(r);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										195
									
								
								DS/C/Lab/Shortcodes/DoublyLLShort.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										195
									
								
								DS/C/Lab/Shortcodes/DoublyLLShort.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,195 @@
 | 
			
		|||
#include<stdio.h>
 | 
			
		||||
#include<stdlib.h>
 | 
			
		||||
typedef struct N {
 | 
			
		||||
    int d;
 | 
			
		||||
    struct N *p, *n;
 | 
			
		||||
} N;
 | 
			
		||||
 | 
			
		||||
N *h;
 | 
			
		||||
 | 
			
		||||
void i(int d) {
 | 
			
		||||
    N *n = malloc(sizeof(N));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    n->n = 0;
 | 
			
		||||
    if (!h) {
 | 
			
		||||
        n->p = 0;
 | 
			
		||||
        h = n;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    while (t->n) t = t->n;
 | 
			
		||||
    t->n = n;
 | 
			
		||||
    n->p = t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void delete_rear() {
 | 
			
		||||
    if (!h) {
 | 
			
		||||
        puts("Empty");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    if (!h->n) {
 | 
			
		||||
        free(h);
 | 
			
		||||
        h = 0;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    while (t->n) t = t->n;
 | 
			
		||||
    t->p->n = 0;
 | 
			
		||||
    free(t);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ip(int d, int p) {
 | 
			
		||||
    N *n = malloc(sizeof(N));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    if (p == 1) {
 | 
			
		||||
        n->p = 0;
 | 
			
		||||
        n->n = h;
 | 
			
		||||
        if (h) h->p = n;
 | 
			
		||||
        h = n;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    for (int i = 1; i < p - 1 && t; i++) t = t->n;
 | 
			
		||||
    if (!t) {
 | 
			
		||||
        puts("Out of range");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    n->n = t->n;
 | 
			
		||||
    n->p = t;
 | 
			
		||||
    if (t->n) t->n->p = n;
 | 
			
		||||
    t->n = n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dp(int p) {
 | 
			
		||||
    if (!h) {
 | 
			
		||||
        puts("Empty");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    if (p == 1) {
 | 
			
		||||
        h = h->n;
 | 
			
		||||
        if (h) h->p = 0;
 | 
			
		||||
        free(t);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    for (int i = 1; i < p && t; i++) t = t->n;
 | 
			
		||||
    if (!t) {
 | 
			
		||||
        puts("Out of range");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    t->p->n = t->n;
 | 
			
		||||
    if (t->n) t->n->p = t->p;
 | 
			
		||||
    free(t);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ia(int d, int k) {
 | 
			
		||||
    N *n = malloc(sizeof(N));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    while (t && t->d != k) t = t->n;
 | 
			
		||||
    if (!t) {
 | 
			
		||||
        puts("Not found");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    n->n = t->n;
 | 
			
		||||
    n->p = t;
 | 
			
		||||
    if (t->n) t->n->p = n;
 | 
			
		||||
    t->n = n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ib(int d, int k) {
 | 
			
		||||
    N *n = malloc(sizeof(N));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    if (!h) {
 | 
			
		||||
        puts("Empty");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    if (h->d == k) {
 | 
			
		||||
        n->n = h;
 | 
			
		||||
        n->p = 0;
 | 
			
		||||
        h->p = n;
 | 
			
		||||
        h = n;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    N *t = h;
 | 
			
		||||
    while (t->n && t->n->d != k) t = t->n;
 | 
			
		||||
    if (!t->n) {
 | 
			
		||||
        puts("Not found");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    n->n = t->n;
 | 
			
		||||
    n->p = t;
 | 
			
		||||
    t->n->p = n;
 | 
			
		||||
    t->n = n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void t() {
 | 
			
		||||
    for (N *t = h; t; t = t->n) printf("%d ", t->d);
 | 
			
		||||
    puts("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void r() {
 | 
			
		||||
    N *t = 0, *c = h;
 | 
			
		||||
    while (c) {
 | 
			
		||||
        t = c->p;
 | 
			
		||||
        c->p = c->n;
 | 
			
		||||
        c->n = t;
 | 
			
		||||
        c = c->p;
 | 
			
		||||
    }
 | 
			
		||||
    if (t) h = t->p;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    int c, d, p, k;
 | 
			
		||||
    while (1) {
 | 
			
		||||
        puts("\n1.Insert rear\n2.Delete rear\n3.Insert position\n4.Delete position\n5.Insert after\n6.Insert before\n7.Traverse\n8.Reverse\n9.Exit");
 | 
			
		||||
        printf("Choice: ");
 | 
			
		||||
        scanf("%d", &c);
 | 
			
		||||
        switch (c) {
 | 
			
		||||
            case 1:
 | 
			
		||||
                printf("Data: ");
 | 
			
		||||
                scanf("%d", &d);
 | 
			
		||||
                i(d);
 | 
			
		||||
                break;
 | 
			
		||||
            case 2:
 | 
			
		||||
                delete_rear();
 | 
			
		||||
                break;
 | 
			
		||||
            case 3:
 | 
			
		||||
                printf("Data: ");
 | 
			
		||||
                scanf("%d", &d);
 | 
			
		||||
                printf("Position: ");
 | 
			
		||||
                scanf("%d", &p);
 | 
			
		||||
                ip(d, p);
 | 
			
		||||
                break;
 | 
			
		||||
            case 4:
 | 
			
		||||
                printf("Position: ");
 | 
			
		||||
                scanf("%d", &p);
 | 
			
		||||
                dp(p);
 | 
			
		||||
                break;
 | 
			
		||||
            case 5:
 | 
			
		||||
                printf("Data: ");
 | 
			
		||||
                scanf("%d", &d);
 | 
			
		||||
                printf("After: ");
 | 
			
		||||
                scanf("%d", &k);
 | 
			
		||||
                ia(d, k);
 | 
			
		||||
                break;
 | 
			
		||||
            case 6:
 | 
			
		||||
                printf("Data: ");
 | 
			
		||||
                scanf("%d", &d);
 | 
			
		||||
                printf("Before: ");
 | 
			
		||||
                scanf("%d", &k);
 | 
			
		||||
                ib(d, k);
 | 
			
		||||
                break;
 | 
			
		||||
            case 7:
 | 
			
		||||
                t();
 | 
			
		||||
                break;
 | 
			
		||||
            case 8:
 | 
			
		||||
                r();
 | 
			
		||||
                break;
 | 
			
		||||
            case 9:
 | 
			
		||||
                exit(0);
 | 
			
		||||
            default:
 | 
			
		||||
                puts("Invalid");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										54
									
								
								DS/C/Lab/Shortcodes/dcll.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								DS/C/Lab/Shortcodes/dcll.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
typedef struct c { int d; struct c *n, *p; } *C;
 | 
			
		||||
C l = NULL;
 | 
			
		||||
 | 
			
		||||
C new_c(int v) {
 | 
			
		||||
    C t = (C)malloc(sizeof(struct c));
 | 
			
		||||
    t->d = v; t->n = t->p = NULL; return t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void insert_beg(int v) {
 | 
			
		||||
    C t = new_c(v);
 | 
			
		||||
    if (!l) { l = t; l->n = l->p = l; }
 | 
			
		||||
    else {
 | 
			
		||||
        t->n = l->n;
 | 
			
		||||
        l->n->p = t;
 | 
			
		||||
        t->p = l;
 | 
			
		||||
        l->n = t;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void del_end() {
 | 
			
		||||
    if (!l) printf("List is empty");
 | 
			
		||||
    else {
 | 
			
		||||
        C p = l->p;
 | 
			
		||||
        p->n = l->n;
 | 
			
		||||
        l->n->p = p;
 | 
			
		||||
        free(l);
 | 
			
		||||
        l = p;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void traverse() {
 | 
			
		||||
    if (!l) return;
 | 
			
		||||
    C c = l->n;
 | 
			
		||||
    do { printf("%d ", c->d); c = c->n; } while (c != l->n);
 | 
			
		||||
    printf("\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    char cont = 'y'; int ch;
 | 
			
		||||
    while (cont == 'y') {
 | 
			
		||||
        printf("1. Insert at beginning\n2. Delete at end\n3. Traverse\n");
 | 
			
		||||
        scanf("%d", &ch);
 | 
			
		||||
        if (ch == 1) { int v; scanf("%d", &v); insert_beg(v); }
 | 
			
		||||
        else if (ch == 2) { del_end(); printf("Element deleted\n"); }
 | 
			
		||||
        else if (ch == 3) { traverse(); }
 | 
			
		||||
        printf("Continue? (y/n)\n");
 | 
			
		||||
        fflush(stdin);
 | 
			
		||||
        scanf(" %c", &cont);
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										55
									
								
								DS/C/Lab/Shortcodes/dllconcs.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								DS/C/Lab/Shortcodes/dllconcs.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
typedef struct node {
 | 
			
		||||
    int d;
 | 
			
		||||
    struct node *l, *r;
 | 
			
		||||
} *N;
 | 
			
		||||
 | 
			
		||||
void concat(N *X1, N *X2) {
 | 
			
		||||
    if (*X1 == NULL) *X1 = *X2;
 | 
			
		||||
    else if (*X2) {
 | 
			
		||||
        N t = *X1;
 | 
			
		||||
        while (t->r) t = t->r;
 | 
			
		||||
        t->r = *X2;
 | 
			
		||||
        (*X2)->l = t;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
N new_node(int d) {
 | 
			
		||||
    N n = (N)malloc(sizeof(struct node));
 | 
			
		||||
    n->d = d;
 | 
			
		||||
    n->l = n->r = NULL;
 | 
			
		||||
    return n;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void insert(N *h, int d) {
 | 
			
		||||
    N n = new_node(d);
 | 
			
		||||
    if (!*h) *h = n;
 | 
			
		||||
    else {
 | 
			
		||||
        N t = *h;
 | 
			
		||||
        while (t->r) t = t->r;
 | 
			
		||||
        t->r = n;
 | 
			
		||||
        n->l = t;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void print(N h) {
 | 
			
		||||
    while (h) {
 | 
			
		||||
        printf("%d ", h->d);
 | 
			
		||||
        h = h->r;
 | 
			
		||||
    }
 | 
			
		||||
    printf("\n");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    N X1 = NULL, X2 = NULL;
 | 
			
		||||
    insert(&X1, 1);
 | 
			
		||||
    insert(&X1, 2);
 | 
			
		||||
    insert(&X1, 3);
 | 
			
		||||
    insert(&X2, 4);
 | 
			
		||||
    insert(&X2, 5);
 | 
			
		||||
    concat(&X1, &X2);
 | 
			
		||||
    print(X1);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										69
									
								
								DS/C/Lab/Shortcodes/tree.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								DS/C/Lab/Shortcodes/tree.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
#include<stdio.h>
 | 
			
		||||
#include<stdlib.h>
 | 
			
		||||
#define M 100
 | 
			
		||||
 | 
			
		||||
typedef struct N *P;
 | 
			
		||||
typedef struct N{int d;P l,r;}N;P root;
 | 
			
		||||
 | 
			
		||||
int t=-1;P stk[M];
 | 
			
		||||
P cn(int v){P n=malloc(sizeof(N));n->d=v;n->l=n->r=NULL;return n;}
 | 
			
		||||
 | 
			
		||||
void ct(int n){
 | 
			
		||||
    int v,i;char dir[50];P p=NULL,c;
 | 
			
		||||
    for(int k=0;k<n;k++){
 | 
			
		||||
        scanf("%d",&v);P tmp=cn(v);
 | 
			
		||||
        if(!root)root=tmp;
 | 
			
		||||
        else{
 | 
			
		||||
            scanf("%s",dir);c=root;
 | 
			
		||||
            for(i=0;dir[i]&&c;i++){
 | 
			
		||||
                p=c;c=(dir[i]=='L'||dir[i]=='l')?c->l:c->r;
 | 
			
		||||
            }
 | 
			
		||||
            if(c||dir[i]){free(tmp);continue;}
 | 
			
		||||
            (dir[i-1]=='L'||dir[i-1]=='l')?(p->l=tmp):(p->r=tmp);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int e(){return t==-1;}void p(P n){if(t<M-1)stk[++t]=n;}
 | 
			
		||||
P o(){return e()?NULL:stk[t--];}
 | 
			
		||||
 | 
			
		||||
void io(P n){while(1){while(n){p(n);n=n->l;}if(!(n=o()))break;printf("%d ",n->d);n=n->r;}}
 | 
			
		||||
void po(P n){while(1){while(n){p(n);printf("%d ",n->d);n=n->l;}if(!(n=o()))break;n=n->r;}}
 | 
			
		||||
void pso(P n){while(1){if(n){p(n);n=n->l;}else{if(e())break;P tmp=stk[t]->r;if(!tmp){tmp=o();printf("%d ",tmp->d);while(!e()&&tmp==stk[t]->r){tmp=o();printf("%d ",tmp->d);}}else n=tmp;}}}
 | 
			
		||||
 | 
			
		||||
P pn(P n,int v){if(!n)return NULL;if((n->l&&n->l->d==v)||(n->r&&n->r->d==v))return n;P l=pn(n->l,v);return l?l:pn(n->r,v);}
 | 
			
		||||
 | 
			
		||||
int md(P n){if(!n)return 0;int l=md(n->l),r=md(n->r);return(l>r?l:r)+1;}
 | 
			
		||||
int pa(P n,int v){if(!n)return 0;if(n->d==v)return 1;if(pa(n->l,v)||pa(n->r,v)){printf("%d ",n->d);return 1;}return 0;}
 | 
			
		||||
void cl(P n,int *c){if(n&&!n->l&&!n->r)(*c)++;if(n){cl(n->l,c);cl(n->r,c);}}
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
    int n,ch,v,lc;
 | 
			
		||||
    printf("\nBinary Tree Menu:\n");
 | 
			
		||||
    printf("1. Create Tree\n");
 | 
			
		||||
    printf("2. Inorder Traversal\n");
 | 
			
		||||
    printf("3. Preorder Traversal\n");
 | 
			
		||||
    printf("4. Postorder Traversal\n");
 | 
			
		||||
    printf("5. Find Parent of Node\n");
 | 
			
		||||
    printf("6. Find Max Depth\n");
 | 
			
		||||
    printf("7. Print Ancestors of Node\n");
 | 
			
		||||
    printf("8. Count Leaf Nodes\n");
 | 
			
		||||
    printf("9. Exit\n");
 | 
			
		||||
    do{
 | 
			
		||||
        printf("Enter choice: ");
 | 
			
		||||
        scanf("%d",&ch);
 | 
			
		||||
        switch(ch){
 | 
			
		||||
            case 1:printf("Enter number of nodes: ");scanf("%d",&n);ct(n);break;
 | 
			
		||||
            case 2:printf("Inorder: ");io(root);puts("");break;
 | 
			
		||||
            case 3:printf("Preorder: ");po(root);puts("");break;
 | 
			
		||||
            case 4:printf("Postorder: ");pso(root);puts("");break;
 | 
			
		||||
            case 5:printf("Enter value to find parent: ");scanf("%d",&v);P p=pn(root,v);p?printf("Parent: %d\n",p->d):puts("Node not found");break;
 | 
			
		||||
            case 6:printf("Max Depth: %d\n",md(root));break;
 | 
			
		||||
            case 7:printf("Enter value to find ancestors: ");scanf("%d",&v);pa(root,v)?puts(""):puts("No ancestors found");break;
 | 
			
		||||
            case 8:lc=0;cl(root,&lc);printf("Leaf count: %d\n",lc);break;
 | 
			
		||||
            case 9:break;
 | 
			
		||||
            default:puts("Invalid choice");
 | 
			
		||||
        }
 | 
			
		||||
    }while(ch!=9);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue