@@ -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
8686void 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