Skip to content

Commit dffab85

Browse files
committed
add
1 parent e52a336 commit dffab85

File tree

7 files changed

+260
-0
lines changed

7 files changed

+260
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Trie{
2+
TrieNode *root;
3+
public:
4+
Trie(){
5+
root = new TrieNode('\0');
6+
}
7+
void insertWord(string word){
8+
insertWordHelper(root,word);
9+
}
10+
void insertWordHelper(TrieNode* root,string word){
11+
//Base Case
12+
if(word.size()==0){
13+
root->isTerminal=true;
14+
return;
15+
}
16+
17+
//small calc
18+
int index = word[0]-'a';
19+
TrieNode *child;
20+
if(root->children[index] !=NULL){
21+
child = root->children(index);
22+
}else{
23+
child = new TrieNode(word[0]);
24+
root->children[index] = child;
25+
}
26+
27+
//Recusrsive call
28+
insertWord(child,word.substr(1));
29+
}
30+
};

013 - Tries and Huffman Coding/TrieNode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class TrieNode{
66
TrieNode(char data){
77
thos->data = data;
88
children = new TrieNode*[26];
9+
for(int i=0;i<26;i++) children[i]=NULL;
910
isTerminal = false;
1011
}
1112
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include<iostream>
2+
#include"TrieNode.h"
3+
using namespace std;
4+
int main(){
5+
return 0;
6+
}

016 - Graphs/001 DFS traversal.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
void print(int **edges,int n,int sv,bool *visited){
5+
cout<<sv<<" ";
6+
visited[sv]=true;
7+
for(int i=0;i<n;i++){
8+
if(i==sv) continue;
9+
if(edges[sv][i]==1){
10+
if(visited[i]) continue;
11+
print(edges,n,i,visited);
12+
}
13+
}
14+
}
15+
16+
int main(){
17+
int n,e;
18+
cin>>n>>e;
19+
int **edges = new int*[n];
20+
for(int i=0;i<n;i++){
21+
edges[i]=new int[n];
22+
for(int j=0;j<n;j++){
23+
edges[i][j]=0;
24+
}
25+
}
26+
27+
for(int i=0;i<e;i++){
28+
int fi,si;
29+
cin>>fi>>si;
30+
edges[fi][si]=1;
31+
edges[si][fi]=1;
32+
}
33+
34+
bool *visited = new bool[n];
35+
for(int i=0;i<n;i++){
36+
visited[i]=false;
37+
}
38+
39+
print(edges,n,0,visited);
40+
return 0;
41+
}

016 - Graphs/002 BFS traversal.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include<iostream>
2+
#include<queue>
3+
using namespace std;
4+
5+
void printBFS(int **edges,int n,int sv,bool *visited){
6+
queue<int> pendingVertices;
7+
pendingVertices.push(sv);
8+
visited[sv]=true;
9+
while(pendingVertices.size()!=0){
10+
int temp = pendingVertices.front();
11+
pendingVertices.pop();
12+
cout<<temp<<" ";
13+
for(int i=0;i<n;i++){
14+
if(i==temp) continue;
15+
if(edges[temp][i]==1 && !visited[i]){
16+
pendingVertices.push(i);
17+
visited[i]=true;
18+
}
19+
}
20+
}
21+
}
22+
23+
int main(){
24+
int n,e;
25+
cin>>n>>e;
26+
int **edges = new int*[n];
27+
for(int i=0;i<n;i++){
28+
edges[i]=new int[n];
29+
for(int j=0;j<n;j++){
30+
edges[i][j]=0;
31+
}
32+
}
33+
34+
for(int i=0;i<e;i++){
35+
int fi,si;
36+
cin>>fi>>si;
37+
edges[fi][si]=1;
38+
edges[si][fi]=1;
39+
}
40+
41+
bool *visited = new bool[n];
42+
for(int i=0;i<n;i++){
43+
visited[i]=false;
44+
}
45+
46+
printBFS(edges,n,0,visited);
47+
return 0;
48+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#include<iostream>
2+
#include<queue>
3+
using namespace std;
4+
5+
void printDFS(int **edges,int n,int sv,bool *visited){
6+
cout<<sv<<" ";
7+
visited[sv]=true;
8+
for(int i=0;i<n;i++){
9+
if(i==sv) continue;
10+
if(edges[sv][i]==1){
11+
if(visited[i]) continue;
12+
printDFS(edges,n,i,visited);
13+
}
14+
}
15+
}
16+
17+
void printBFS(int **edges,int n,int sv,bool *visited){
18+
queue<int> pendingVertices;
19+
pendingVertices.push(sv);
20+
visited[sv]=true;
21+
while(pendingVertices.size()!=0){
22+
int temp = pendingVertices.front();
23+
pendingVertices.pop();
24+
cout<<temp<<" ";
25+
for(int i=0;i<n;i++){
26+
if(i==temp) continue;
27+
if(edges[temp][i]==1 && !visited[i]){
28+
pendingVertices.push(i);
29+
visited[i]=true;
30+
}
31+
}
32+
}
33+
}
34+
35+
void BFS(int **edges,int n){
36+
bool *visited = new bool(n);
37+
for(int i=0;i<n;i++) visited[i]=false;
38+
for(int i=0;i<n;i++){
39+
if(!visited[i]){
40+
printBFS(edges,n,i,visited);
41+
}
42+
}
43+
}
44+
45+
void DFS(int **edges,int n){
46+
bool *visited = new bool(n);
47+
for(int i=0;i<n;i++) visited[i]=false;
48+
for(int i=0;i<n;i++){
49+
if(!visited[i]){
50+
printDFS(edges,n,i,visited);
51+
}
52+
}
53+
}
54+
55+
int main(){
56+
int n,e;
57+
cin>>n>>e;
58+
int **edges = new int*[n];
59+
for(int i=0;i<n;i++){
60+
edges[i]=new int[n];
61+
for(int j=0;j<n;j++){
62+
edges[i][j]=0;
63+
}
64+
}
65+
66+
for(int i=0;i<e;i++){
67+
int fi,si;
68+
cin>>fi>>si;
69+
edges[fi][si]=1;
70+
edges[si][fi]=1;
71+
}
72+
73+
cout<<"DFS"<<endl;
74+
DFS(edges,n);
75+
cout<<"\nBFS"<<endl;
76+
BFS(edges,n);
77+
78+
return 0;
79+
}

016 - Graphs/004 hasPath.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include<iostream>
2+
#include<queue>
3+
using namespace std;
4+
5+
bool hasPath(int **edges,int n,int sv,bool *visited,int ei){
6+
queue<int> pendingVertices;
7+
pendingVertices.push(sv);
8+
visited[sv]=true;
9+
while(pendingVertices.size()!=0){
10+
int temp = pendingVertices.front();
11+
pendingVertices.pop();
12+
if(temp==ei){
13+
return true;
14+
break;
15+
}
16+
for(int i=0;i<n;i++){
17+
if(i==temp) continue;
18+
if(edges[temp][i]==1 && !visited[i]){
19+
pendingVertices.push(i);
20+
visited[i]=true;
21+
}
22+
}
23+
}
24+
return false;
25+
}
26+
27+
int main(){
28+
int n,e;
29+
cin>>n>>e;
30+
int **edges = new int*[n];
31+
for(int i=0;i<n;i++){
32+
edges[i]=new int[n];
33+
for(int j=0;j<n;j++){
34+
edges[i][j]=0;
35+
}
36+
}
37+
38+
for(int i=0;i<e;i++){
39+
int fi,si;
40+
cin>>fi>>si;
41+
edges[fi][si]=1;
42+
edges[si][fi]=1;
43+
}
44+
45+
int si,ei;
46+
cin>>si>>ei;
47+
48+
bool *visited = new bool[n];
49+
for(int i=0;i<n;i++){
50+
visited[i]=false;
51+
}
52+
53+
cout<<hasPath(edges,n,si,visited,ei);
54+
return 0;
55+
}

0 commit comments

Comments
 (0)