Skip to content

Commit 7ad9f6d

Browse files
authored
Merge pull request #28 from Debashis08/release
Release
2 parents 190f88e + a48ff93 commit 7ad9f6d

21 files changed

+1049
-692
lines changed

Headers/0002_Tree/0001_BinarySearchTree.h

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,47 @@
33
#include<vector>
44
#include<string>
55
using namespace std;
6-
class Node
6+
7+
namespace BinarySearchTree
78
{
8-
public:
9-
int data;
10-
Node* parent;
11-
Node* left;
12-
Node* right;
9+
class Node
10+
{
11+
public:
12+
int data;
13+
Node* parent;
14+
Node* left;
15+
Node* right;
1316

14-
Node(int data, Node* parent, Node* left, Node* right);
15-
};
17+
Node(int data, Node* parent, Node* left, Node* right);
18+
};
1619

17-
class BinarySearchTree
18-
{
19-
private:
20-
Node* _root;
21-
void _InsertNode(Node* node);
22-
Node* _FindNode(int value);
23-
Node* _FindMinimumValueNode(Node* node);
24-
Node* _FindMaximumValueNode(Node* node);
25-
Node* _FindSuccessorNode(Node* node);
26-
Node* _FindPredecessorNode(Node* node);
27-
void _Transplant(Node* nodeU, Node* nodeV);
28-
void _DeleteNode(Node* node);
29-
void _RecursiveInorderTraversal(Node* node, vector<int>& result);
30-
void _RecursivePreorderTraversal(Node* node, vector<int>& result);
31-
void _RecursivePostorderTraversal(Node* node, vector<int>& result);
32-
void _MorrisInorderTraversal(Node* node, vector<int>& result);
33-
void _MorrisPreorderTraversal(Node* node, vector<int>& result);
34-
void _MorrisPostorderTraversal(Node* node, vector<int>& result);
35-
public:
36-
BinarySearchTree();
37-
void InsertNode(int value);
38-
void DeleteNode(int value);
39-
vector<int> GetRecursiveInorderTravesalResult();
40-
vector<int> GetRecursivePreorderTravesalResult();
41-
vector<int> GetRecursivePostorderTravesalResult();
42-
vector<int> GetMorrisInorderTraversalResult();
43-
vector<int> GetMorrisPreorderTraversalResult();
44-
vector<int> GetMorrisPostorderTraversalResult();
45-
};
20+
class BinarySearchTree
21+
{
22+
private:
23+
Node* _root;
24+
void _InsertNode(Node* node);
25+
Node* _FindNode(int value);
26+
Node* _FindMinimumValueNode(Node* node);
27+
Node* _FindMaximumValueNode(Node* node);
28+
Node* _FindSuccessorNode(Node* node);
29+
Node* _FindPredecessorNode(Node* node);
30+
void _Transplant(Node* nodeU, Node* nodeV);
31+
void _DeleteNode(Node* node);
32+
void _RecursiveInorderTraversal(Node* node, vector<int>& result);
33+
void _RecursivePreorderTraversal(Node* node, vector<int>& result);
34+
void _RecursivePostorderTraversal(Node* node, vector<int>& result);
35+
void _MorrisInorderTraversal(Node* node, vector<int>& result);
36+
void _MorrisPreorderTraversal(Node* node, vector<int>& result);
37+
void _MorrisPostorderTraversal(Node* node, vector<int>& result);
38+
public:
39+
BinarySearchTree();
40+
void InsertNode(int value);
41+
void DeleteNode(int value);
42+
vector<int> GetRecursiveInorderTravesalResult();
43+
vector<int> GetRecursivePreorderTravesalResult();
44+
vector<int> GetRecursivePostorderTravesalResult();
45+
vector<int> GetMorrisInorderTraversalResult();
46+
vector<int> GetMorrisPreorderTraversalResult();
47+
vector<int> GetMorrisPostorderTraversalResult();
48+
};
49+
}

Headers/0003_Graph/0001_BreadthFirstSearch.h

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,30 @@
66
#include<string>
77
#include<vector>
88
using namespace std;
9-
enum color { WHITE, GRAY, BLACK };
109

11-
class BFSNode
10+
namespace BreadthFirstSearch
1211
{
13-
public:
14-
int data;
15-
int distance;
16-
int color;
17-
BFSNode* parent;
18-
BFSNode(int value);
19-
};
12+
enum color { WHITE, GRAY, BLACK };
13+
class Node
14+
{
15+
public:
16+
int data;
17+
int distance;
18+
int color;
19+
Node* parent;
20+
Node(int value);
21+
};
2022

21-
class BFSGraph
22-
{
23-
private:
24-
map<BFSNode*, list<BFSNode*>> _adjlist;
25-
map<int, BFSNode*> _nodeMap;
26-
BFSNode* MakeOrFindNode(int value);
27-
void BreadthFirstSearch(BFSNode* node);
28-
public:
29-
void PushUndirectedEdge(int valueU, int valueV);
30-
void BFS(int value);
31-
vector<pair<int, int>> ShowBFSResult();
32-
};
23+
class Graph
24+
{
25+
private:
26+
map<Node*, list<Node*>> _adjlist;
27+
map<int, Node*> _nodeMap;
28+
Node* MakeOrFindNode(int value);
29+
void BreadthFirstSearch(Node* node);
30+
public:
31+
void PushUndirectedEdge(int valueU, int valueV);
32+
void BFS(int value);
33+
vector<pair<int, int>> ShowBFSResult();
34+
};
35+
}

Headers/0003_Graph/0002_DepthFirstSearch.h

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,33 @@
55
#include<string>
66
#include<vector>
77
using namespace std;
8-
enum color { WHITE, GRAY, BLACK };
98

10-
class DFSNode
9+
namespace DepthFirstSearch
1110
{
12-
public:
13-
int data;
14-
int color;
15-
int discoveredTime;
16-
int finishingTime;
17-
DFSNode* parent;
18-
DFSNode(int value);
19-
};
11+
enum color { WHITE, GRAY, BLACK };
2012

21-
class DFSGraph
22-
{
23-
private:
24-
int time;
25-
map<DFSNode*, list<DFSNode*>> _adjlist;
26-
map<int, DFSNode*> _nodeMap;
27-
DFSNode* MakeOrFindNode(int value);
28-
void DepthFirstSearch(DFSNode* DFSNode);
29-
public:
30-
void PushDirectedEdge(int valueU, int valueV);
31-
void DFS();
32-
vector<pair<int,pair<int,int>>> ShowDFSResult();
33-
};
13+
class Node
14+
{
15+
public:
16+
int data;
17+
int color;
18+
int discoveredTime;
19+
int finishingTime;
20+
Node* parent;
21+
Node(int value);
22+
};
23+
24+
class Graph
25+
{
26+
private:
27+
int time;
28+
map<Node*, list<Node*>> _adjlist;
29+
map<int, Node*> _nodeMap;
30+
Node* MakeOrFindNode(int value);
31+
void DepthFirstSearch(Node* Node);
32+
public:
33+
void PushDirectedEdge(int valueU, int valueV);
34+
void DFS();
35+
vector<pair<int, pair<int, int>>> ShowDFSResult();
36+
};
37+
}

Headers/0003_Graph/0003_TopologicalSort.h

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,36 @@
55
#include<string>
66
#include<vector>
77
using namespace std;
8-
enum color { WHITE, GRAY, BLACK };
98

10-
class TopologicalSortNode
9+
namespace TopologicalSort
1110
{
12-
public:
13-
int data;
14-
int color;
15-
int discoveryTime;
16-
int finishingTime;
17-
TopologicalSortNode* parent;
18-
TopologicalSortNode(int value);
19-
};
11+
enum color { WHITE, GRAY, BLACK };
2012

21-
class TopologicalSortGraph
22-
{
23-
private:
24-
int time;
25-
bool hasCycle;
26-
map<TopologicalSortNode*, list<TopologicalSortNode*>> _adjlist;
27-
map<int, TopologicalSortNode*> _nodeMap;
28-
list<TopologicalSortNode*> _topologicalSortedNodeList;
29-
TopologicalSortNode* MakeOrFindNode(int value);
30-
void DepthFirstSearch(TopologicalSortNode* DFSNode);
31-
public:
32-
void PushDirectedEdge(int valueU, int valueV);
33-
void PushSingleNode(int valueU);
34-
void TopologicalSort();
35-
vector<pair<int, pair<int, int>>> ShowTopologicalSortResult();
36-
};
13+
class Node
14+
{
15+
public:
16+
int data;
17+
int color;
18+
int discoveryTime;
19+
int finishingTime;
20+
Node* parent;
21+
Node(int value);
22+
};
23+
24+
class Graph
25+
{
26+
private:
27+
int time;
28+
bool hasCycle;
29+
map<Node*, list<Node*>> _adjlist;
30+
map<int, Node*> _nodeMap;
31+
list<Node*> _topologicalSortedNodeList;
32+
Node* MakeOrFindNode(int value);
33+
void DepthFirstSearch(Node* DFSNode);
34+
public:
35+
void PushDirectedEdge(int valueU, int valueV);
36+
void PushSingleNode(int valueU);
37+
void TopologicalSort();
38+
vector<pair<int, pair<int, int>>> ShowTopologicalSortResult();
39+
};
40+
}

Headers/0003_Graph/0004_StronglyConnectedComponents.h

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,39 @@
55
#include<string>
66
#include<vector>
77
using namespace std;
8-
enum color { WHITE, GRAY, BLACK };
98

10-
class SCCNode
9+
namespace StronglyConnectedComponents
1110
{
12-
public:
13-
int data;
14-
int color;
15-
int discoveryTime;
16-
int finishingTime;
17-
SCCNode* parent;
18-
SCCNode(int value);
19-
};
11+
enum color { WHITE, GRAY, BLACK };
2012

21-
class StronglyConnectedComponentsGraph
22-
{
23-
private:
24-
int time;
25-
map<SCCNode*, list<SCCNode*>> _adjlistG;
26-
map<SCCNode*, list<SCCNode*>> _adjlistT;
27-
map<int, SCCNode*> _nodeMap;
28-
list<SCCNode*> _nodesFinishingTimeOrder;
29-
vector<vector<int>> _allConnectedComponents;
30-
SCCNode* MakeOrFindNode(int value);
31-
void DepthFirstSearchOnGraphG(SCCNode* DFSNode);
32-
void DepthFirstSearchOnGraphT(SCCNode* DFSNode, vector<int>& connectedComponents);
33-
public:
34-
void PushDirectedEdge(int valueU, int valueV);
35-
void PushSingleNode(int valueU);
36-
void DFSOnGraphG();
37-
void DFSOnGraphT();
38-
vector<vector<int>> FindAllStronglyConnectedComponents();
39-
};
13+
class Node
14+
{
15+
public:
16+
int data;
17+
int color;
18+
int discoveryTime;
19+
int finishingTime;
20+
Node* parent;
21+
Node(int value);
22+
};
23+
24+
class Graph
25+
{
26+
private:
27+
int time;
28+
map<Node*, list<Node*>> _adjlistG;
29+
map<Node*, list<Node*>> _adjlistT;
30+
map<int, Node*> _nodeMap;
31+
list<Node*> _nodesFinishingTimeOrder;
32+
vector<vector<int>> _allConnectedComponents;
33+
Node* MakeOrFindNode(int value);
34+
void DepthFirstSearchOnGraphG(Node* DFSNode);
35+
void DepthFirstSearchOnGraphT(Node* DFSNode, vector<int>& connectedComponents);
36+
public:
37+
void PushDirectedEdge(int valueU, int valueV);
38+
void PushSingleNode(int valueU);
39+
void DFSOnGraphG();
40+
void DFSOnGraphT();
41+
vector<vector<int>> FindAllStronglyConnectedComponents();
42+
};
43+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#pragma once
2+
3+
#include<map>
4+
#include<unordered_set>
5+
#include<vector>
6+
using namespace std;
7+
8+
namespace HamiltonianPathAndCycle
9+
{
10+
class Node
11+
{
12+
public:
13+
int data;
14+
bool isVisited;
15+
Node(int value);
16+
};
17+
18+
class Graph
19+
{
20+
private:
21+
bool _isHamiltonianCyclePresent;
22+
bool _isHamiltonianPathPresent;
23+
int _visitedNodeCount;
24+
Node* _startingNode;
25+
map<Node*, unordered_set<Node*>> _adjlist;
26+
map<int, Node*> _nodeMap;
27+
vector<int> _hamiltonianPath;
28+
Node* MakeOrFindNode(int value);
29+
bool IsSafe(Node* nodeU, Node* nodeV);
30+
bool HamiltonianCycleAndPathUtil(Node* node);
31+
32+
public:
33+
void PushUndirectedEdge(int valueU, int valueV);
34+
void PushSingleNode(int valueU);
35+
void FindHamiltonianCycleAndPath();
36+
bool IsHamiltonianCyclePresent();
37+
bool IsHamiltonianPathPresent();
38+
vector<int> GetHamiltonianPath();
39+
};
40+
}

0 commit comments

Comments
 (0)