Min Heap
Min Heap
------------------------------
#include<bits/stdc++.h>
class Node{
public:
int data;
Node* left;
Node* right;
Node* parent;
Node(int val){
data=val;
left=NULL;
right=NULL;
parent=NULL;
};
class MinHeap{
public:
Node* root;
MinHeap(){
root=nullptr;
root=newNode;
return;
queue<Node*>q;
q.push(root);
Node* temp;
while(!q.empty()){
q.pop();
if(curr->left==nullptr){
newNode->parent=curr;
curr->left=newNode;
temp = curr->left;
break;
else{
q.push(curr->left);
if(curr->right==nullptr){
newNode->parent=curr;
curr->right=newNode;
temp = curr->right;
break;
else{
q.push(curr->right);
swap(temp->data,temp->parent->data);
temp=temp->parent;
if(root==nullptr){
cout<<"Heap is empty\n";
return;
queue<Node*>q;
q.push(root);
while(!q.empty()){
q.pop();
if(curr->data==val){
cout<<"Element found\n";
return;
if(curr->left!=nullptr){
q.push(curr->left);
if(curr->right!=nullptr){
q.push(curr->right);
void del() {
delete root;
root = nullptr;
return;
queue<Node*> q;
q.push(root);
while (!q.empty()) {
q.pop();
if(curr->left) {
q.push(curr->left);
if(curr->right) {
q.push(curr->right);
lastNode = curr;
}
parentOfLast = lastNode->parent;
swap(root->data, lastNode->data);
if(parentOfLast->right == lastNode) {
parentOfLast->right = nullptr;
}else{
parentOfLast->left = nullptr;
delete lastNode;
while(true){
temp2 = temp->left;
temp2 = temp->right;
if(temp2 != temp) {
swap(temp->data, temp2->data);
temp = temp2;
}else{
break;
void traverse(){
queue<Node*>q;
q.push(root);
while(!q.empty()){
q.pop();
cout<<curr->data<<" ";
if(curr->left!=nullptr){
q.push(curr->left);
if(curr->right!=nullptr){
q.push(curr->right);
cout<<"\n";
};
void dedsec(){
MinHeap minHeap;
minHeap.insert(10);
minHeap.insert(20);
minHeap.insert(5);
minHeap.insert(30);
minHeap.insert(15);
minHeap.insert(25);
minHeap.insert(35);
minHeap.insert(40);
minHeap.insert(50);
minHeap.insert(45);
minHeap.insert(55);
minHeap.traverse();
minHeap.del();
minHeap.traverse();
minHeap.search(20);
minHeap.search(100);
int main()
cin.tie(0)->sync_with_stdio(0);
ll t=1;
//cin >> t;
while(t--){
dedsec();
Output:
Huffman Algorithm
--------------------------------------
#include<bits/stdc++.h>
class Node {
public:
char data;
int freq;
Node* left;
Node* right;
Node* parent;
this->data = data;
this->freq = freq;
struct freqComp{
};
};
class MinHeap {
public:
pq.push(node);
Node* Min() {
pq.pop();
return minNode;
int size() {
return pq.size();
};
huffmanCodes[root->data] = str;
MinHeap minHeap;
minHeap.insert(newNode);
interNode->left = left;
interNode->right = right;
minHeap.insert(interNode);
return minHeap.Min();
void dedsec(){
}
int main() {
cin.tie(0)->sync_with_stdio(0);
ll t=1;
//cin >> t;
while(t--){
dedsec();
Output:
Graph
-------------------------
#include<bits/stdc++.h>
for(auto v:adj[u]){
if(!visited[v]){
void dedsec(){
ll n,m;
vector<vector<ll>>adj(n+1);
for(ll i=0;i<m;i++){
ll u,v;
adj[u].push_back(v);
adj[v].push_back(u);
vector<bool>visited(n+1, false);
queue<ll>q;
vector<bool>visited2(n+1,false);
q.push(1);
visited2[1]=true;
while(!q.empty()){
ll u=q.front();
q.pop();
for(auto v:adj[u]){
if(!visited2[v]){
visited2[v]=true;
q.push(v);
int main()
cin.tie(0)->sync_with_stdio(0);
ll t=1;
cin >> t;
while(t--){
dedsec();
}
Output: