clone-graph 1.0.0
Clone Graph
Loading...
Searching...
No Matches
Solution Class Reference

Public Member Functions

void delete_graph (Node *node)
 
void print_graph (Node *node)
 Prints graph nodes of a connected node using BFS.
 
NodecloneGraph (Node *node)
 

Detailed Description

Definition at line 31 of file main.cpp.

Member Function Documentation

◆ cloneGraph()

Node * Solution::cloneGraph ( Node node)
inline

Definition at line 87 of file main.cpp.

88 {
89 if (!node)
90 return NULL;
91
92 unordered_map<Node*, Node*> node_map; // first node is the original node, second one is it's clone
93 queue<Node*> node_queue;
94
95 // cloning the source node
96 Node* new_node = new Node(node->val);
97
98 node_map[node] = new_node;
99 node_queue.push(node);
100
101 while (!node_queue.empty())
102 {
103 Node* current = node_queue.front();
104 node_queue.pop();
105
106 vector<Node*>& v = current->neighbors;
107 for (int i = 0; i < (int)v.size(); ++i)
108 {
109 if (node_map[v[i]] == NULL)
110 {
111 new_node = new Node(v[i]->val);
112 new_node->neighbors.reserve(2); // at least two reserved fields for the neighbors
113 node_map[v[i]] = new_node;
114 node_queue.push(v[i]);
115 }
116 node_map[current]->neighbors.push_back(node_map[v[i]]);
117 }
118 }
119 return node_map[node];
120 }
Definition main.cpp:7
int val
Definition main.cpp:9
vector< Node * > neighbors
Definition main.cpp:10

References Node::neighbors, and Node::val.

Referenced by main().

◆ delete_graph()

void Solution::delete_graph ( Node node)
inline

Definition at line 34 of file main.cpp.

35 {
36 if (!node)
37 return;
38 set<Node*> visited;
39 queue<Node*> node_queue;
40 node_queue.push(node);
41 visited.insert(node);
42 while (!node_queue.empty())
43 {
44 Node* current = node_queue.front();
45 node_queue.pop();
46
47 for (Node* neighbor: current->neighbors)
48 {
49 if (neighbor && visited.find(neighbor) == visited.end())
50 {
51 node_queue.push(neighbor);
52 visited.insert(neighbor);
53 }
54 }
55 delete current;
56 }
57 }

References Node::neighbors.

Referenced by main().

◆ print_graph()

void Solution::print_graph ( Node node)
inline

Prints graph nodes of a connected node using BFS.

Definition at line 62 of file main.cpp.

63 {
64 if (!node)
65 return;
66 set<Node*> visited;
67 queue<Node*> node_queue;
68 node_queue.push(node);
69 visited.insert(node);
70 while (!node_queue.empty())
71 {
72 Node* current = node_queue.front();
73 node_queue.pop();
74
75 cout << "Node " << current->val << "; address: " << current << endl;
76 for (Node* neighbor: current->neighbors)
77 {
78 if (neighbor && visited.find(neighbor) == visited.end())
79 {
80 node_queue.push(neighbor);
81 visited.insert(neighbor);
82 }
83 }
84 }
85 }

References Node::neighbors, and Node::val.

Referenced by main().


The documentation for this class was generated from the following file: