cprg
cprg
h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
if (root == NULL) {
return createNode(data);
return root;
}
// Function for in-order traversal (Left -> Root -> Right)
if (root != NULL) {
inorderTraversal(root->left);
inorderTraversal(root->right);
if (root != NULL) {
preorderTraversal(root->left);
preorderTraversal(root->right);
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
int main() {
inorderTraversal(root);
printf("\n");
preorderTraversal(root);
printf("\n");
postorderTraversal(root);
printf("\n");
return 0;
Output:
In-order Traversal: 20 30 40 50 60 70 80
Pre-order Traversal: 50 30 20 40 70 60 80
Post-order Traversal: 20 40 30 60 80 70 50
#include <stdio.h>
#include <stdlib.h>
struct Queue {
int items[MAX];
};
q->front = -1;
q->rear = -1;
if (isFull(q)) {
if (q->front == -1) {
q->rear++;
q->items[q->rear] = value;
if (isEmpty(q)) {
return -1;
} else {
if (q->front == q->rear) {
} else {
q->front++;
return value;
if (isEmpty(q)) {
printf("Queue is Empty!\n");
} else {
printf("\n");
int main() {
struct Queue q;
initializeQueue(&q);
printf("QUEUE OPERATIONS\n");
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
enqueue(&q, 40);
enqueue(&q, 50);
display(&q);
dequeue(&q);
dequeue(&q);
display(&q);
display(&q);
return 0;
Output:
QUEUE OPERATIONS
Enqueued: 10
Enqueued: 20
Enqueued: 30
Enqueued: 40
Enqueued: 50
Queue elements: 10 20 30 40 50
Dequeued: 10
Dequeued: 20
Queue elements: 30 40 50
Queue elements: 30 40 50