adsa3
adsa3
#include <iostream>
#include <vector>
#include <algorithm>
int temp = a;
a = b;
b = temp;
// Min Heap
class MinHeap {
public:
vector<int> heap;
// Heapify up
index = (index - 1) / 2;
// Heapify down
smallest = left;
smallest = right;
if (smallest != index) {
swap(heap[index], heap[smallest]);
heapifyDown(smallest);
heap.push_back(value);
heapifyUp(heap.size() - 1);
if(heap[i] == value) {
index = i;
break;
if(index != -1) {
heap[index] = heap.back();
heap.pop_back();
heapifyDown(index);
} else {
void display() {
};
class MaxHeap {
public:
vector<int> heap;
index = (index - 1) / 2;
largest = left;
largest = right;
if (largest != index) {
swap(heap[index], heap[largest]);
heapifyDown(largest);
heap.push_back(value);
heapifyUp(heap.size() - 1);
if(heap[i] == value) {
index = i;
break;
if(index != -1) {
heap[index] = heap.back();
heap.pop_back();
heapifyDown(index);
} else {
void display() {
};
int main() {
MinHeap minHeap;
minHeap.insert(3);
minHeap.insert(1);
minHeap.insert(4);
minHeap.insert(1);
minHeap.insert(5);
minHeap.insert(9);
minHeap.insert(2);
minHeap.insert(6);
minHeap.display();
minHeap.deleteElement(9);
minHeap.display();
MaxHeap maxHeap;
maxHeap.insert(3);
maxHeap.insert(1);
maxHeap.insert(4);
maxHeap.insert(1);
maxHeap.insert(5);
maxHeap.insert(9);
maxHeap.insert(2);
maxHeap.insert(6);
maxHeap.display();
maxHeap.deleteElement(9);
maxHeap.display();
return 0;
}
Ex4a
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
class GraphMatrix
vector<vector<int>> adjMatrix;
int numVertices;
public:
GraphMatrix(int vertices);
private:
};
adjMatrix[src][dest] = 1;
}
void GraphMatrix::BFS(int start)
queue<int> q;
visited[start] = true;
q.push(start);
cout << "BFS starting from vertex " << start << ": ";
while (!q.empty())
q.pop();
visited[i] = true;
q.push(i);
cout << "DFS starting from vertex " << start << ": ";
DFSUtil(start, visited);
cout << endl;
visited[vertex] = true;
DFSUtil(i, visited);
int main()
graph.addEdge(0, 1);
graph.addEdge(0, 4);
graph.addEdge(1, 2);
graph.addEdge(1, 3);
graph.addEdge(2, 3);
graph.addEdge(3, 4);
return 0;
}
Ex4b
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <unordered_set>
class Graph
private:
public:
// Constructor
adjList.resize(vertices);
adjList[u].push_back(v);
// Breadth-First Traversal
void breadthFirstTraversal(int start)
vector<bool>visited(numVertices, false);
queue<int> q;
visited[start] = true;
q.push(start);
while (!q.empty())
q.pop();
if (!visited[neighbor])
visited[neighbor] = true;
q.push(neighbor);
cout<<endl;
// Depth-First Traversal
vector<bool>visited(numVertices, false);
stack<int> s;
s.push(start);
while (!s.empty())
s.pop();
if (!visited[node])
visited[node] = true;
it != adjList[node].rend(); ++it)
if (!visited[*it])
s.push(*it);
cout<<endl;
};
int main()
Graph g(4);
// Add edges
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(1, 3);
g.addEdge(2, 3);
g.breadthFirstTraversal(0);
g.depthFirstTraversal(0);
return 0;