Skip to content

Commit 33c90a7

Browse files
committed
feature: hamcycle - return output added
1 parent d9a526e commit 33c90a7

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

Headers/0003_Graph/0005_HamiltonianPathAndCycle.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,8 @@ class HamiltonianGraph
3030
void PushUndirectedEdge(int valueU, int valueV);
3131
void PushSingleNode(int valueU);
3232
void FindHamiltonianCycleAndPath();
33+
bool IsHamiltonianCyclePresent();
34+
bool IsHamiltonianPathPresent();
35+
vector<HamiltonianNode*> GetHamiltonianCycle();
36+
vector<HamiltonianNode*> GetHamiltonianPath();
3337
};

SourceCodes/0003_Graph/0005_HamiltonianPathAndCycle.cc

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ bool HamiltonianGraph::HamiltonianCycleAndPathUtil(HamiltonianNode* nodeU)
6060
{
6161
return true;
6262
}
63-
this->_hamiltonianPath.pop_back();
64-
iterator.second->isVisited = false;
6563
this->visitedNodeCount--;
64+
iterator.second->isVisited = false;
65+
this->_hamiltonianPath.pop_back();
6666
}
6767
}
6868
return false;
@@ -85,9 +85,36 @@ void HamiltonianGraph::PushSingleNode(int valueU)
8585

8686
void HamiltonianGraph::FindHamiltonianCycleAndPath()
8787
{
88+
this->isHamiltonianCyclePresent = false;
89+
this->isHamiltonianPathPresent = false;
90+
this->_hamiltonianPath = {};
8891
HamiltonianNode* node = this->_nodeMap[0];
8992
this->_hamiltonianPath.push_back(node);
9093
node->isVisited = true;
9194
this->visitedNodeCount = 1;
9295
this->HamiltonianCycleAndPathUtil(node);
96+
}
97+
98+
bool HamiltonianGraph::IsHamiltonianCyclePresent()
99+
{
100+
return this->isHamiltonianCyclePresent;
101+
}
102+
103+
bool HamiltonianGraph::IsHamiltonianPathPresent()
104+
{
105+
return this->isHamiltonianPathPresent;
106+
}
107+
108+
vector<HamiltonianNode*> HamiltonianGraph::GetHamiltonianCycle()
109+
{
110+
if (this->isHamiltonianCyclePresent)
111+
{
112+
this->_hamiltonianPath.push_back(this->_nodeMap[0]);
113+
}
114+
return this->_hamiltonianPath;
115+
}
116+
117+
vector<HamiltonianNode*> HamiltonianGraph::GetHamiltonianPath()
118+
{
119+
return this->_hamiltonianPath;
93120
}

0 commit comments

Comments
 (0)