#include<stdio.h> #include<stdlib.h> typedef struct node { int data; struct node *left,*right; }NODE; NODE * createbst(NODE *root) { int n,i; int num; NODE *nn,*temp; printf("\n enter how many nodes in BST"); scanf("%d",&n); for(i=1;i<=n;i++) { nn=(NODE *)malloc(sizeof(NODE *)); nn->data=num; if(root==NULL) root=nn; else { temp=root; while(1) { if(num<temp->data) { if(temp->left==NULL) { temp->left=nn; break; } else temp=temp->left; } else { if(temp->right==NULL) { temp->right==nn; break; } else temp=temp->right; } } } } return root; } NODE *insertbst(NODE *root,int val) { NODE *nn,*temp; nn=(NODE *)malloc(sizeof(NODE *)); nn->left=nn->right=NULL; nn->data=val; if(root==NULL) root=nn; else { temp=root; while(1) { if(val<temp->data) { if(temp->left==NULL) { temp->left=nn; break; } else temp=temp->right; } } } return root; } void preorder(NODE *root) { NODE *temp=root; if(temp!=NULL) { printf("->%d",temp->data); preorder(temp->left); preorder(temp->right); } } void inorder(NODE *root) { NODE *temp=root; if(temp!=NULL) { inorder(temp->left); printf("->%d",temp->data); inorder(temp->right); } } void postorder(NODE *root) { NODE *temp=root; if (temp!=NULL) { postorder(temp->left); postorder(temp->right); printf("->%d",temp->data); } } NODE *search(NODE *root,int key) { NODE *temp=root; while(temp!=NULL) { if(key==temp->data) return temp; if(key<temp->data) temp=temp->left; else temp=temp->right; } return root; } int countleaf(NODE *root) { static int countl=0; NODE *temp=root; if(temp!=NULL) { if((temp->left==NULL)&&(temp->right==NULL)) { countl++; printf("\t %d",temp->data); } countleaf(temp->left); countleaf(temp->right); } return countl; } int countnonleaf(NODE *root) { static int countnonl=0; NODE *temp=root; if(temp!=NULL) { if((temp->left!=NULL)&&(temp->right!=NULL)) { countnonl++; printf("\t %d",temp->data); } countnonleaf(temp->left); countnonleaf(temp->right); } return countnonl; } void main() { int ch,val,key,cleaf,nonleaf; NODE *root=NULL,*k=NULL; do { printf("MENU"); printf("\n 1:Create BST"); printf("\n 2:Insert new element into BST"); printf("\n 3:Traversal BST"); printf("\n 4:searching an element BST"); printf("\n 5:count leaf nodes of BST"); printf("\n 6:count Non leaf nodes of BST"); printf("\n 7:EXIT"); printf("enter your choice:"); scanf("%d",&ch); switch(ch) { case 1:root=createbst(root); break; case 2:printf("enter value to be inserted into tree"); scanf("%d",&val); root=insertbst(root,val); preorder(root); break; case 3:printf("tree traversal" ); printf("tree traversal in preorder" ); preorder(root); printf("tree traversal in inorder" ); inorder(root); printf("tree traversal in postorder "); postorder(root); break; case 4:printf("enter key to search:"); scanf("%d",&key); k=search (root,key); if(k==NULL) printf("key is not found "); else printf("key found"); break; case 5:cleaf=countleaf(root); printf("leaf nodes in tree =%d",cleaf); break; case 6:nonleaf=countnonleaf(root); printf("Non leaf nodes in tree=%d",nonleaf); break; case 7:exit(0); } }while(ch!=7); }
Write, Run & Share C Language code online using OneCompiler's C online compiler for free. It's one of the robust, feature-rich online compilers for C language, running the latest C version which is C18. Getting started with the OneCompiler's C editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'C' and start coding!
OneCompiler's C online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample C program which takes name as input and print your name with hello.
#include <stdio.h>
int main()
{
char name[50];
printf("Enter name:");
scanf("%s", name);
printf("Hello %s \n" , name );
return 0;
}
C language is one of the most popular general-purpose programming language developed by Dennis Ritchie at Bell laboratories for UNIX operating system. The initial release of C Language was in the year 1972. Most of the desktop operating systems are written in C Language.
When ever you want to perform a set of operations based on a condition if-else
is used.
if(conditional-expression) {
// code
} else {
// code
}
You can also use if-else for nested Ifs and if-else-if ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to if-else-if ladder.
switch(conditional-expression) {
case value1:
// code
break; // optional
case value2:
// code
break; // optional
...
default:
// code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
// code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type array-name[size];
data-type array-name[size][size];
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
Two types of functions are present in C
Library functions are the in-built functions which are declared in header files like printf(),scanf(),puts(),gets() etc.,
User defined functions are the ones which are written by the programmer based on the requirement.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
//code
}