What is a key structural difference between a graph and a tree?
A tree is a special type of graph that is connected and has no cycles, while a graph can have cycles and may not be connected.
Click to reveal answer
beginner
Can a tree have cycles? Why or why not?
No, a tree cannot have cycles because it must be acyclic to maintain a hierarchical structure with a single path between any two nodes.
Click to reveal answer
beginner
In terms of connectivity, how do graphs and trees differ?
A tree is always connected, meaning there is a path between any two nodes. A graph may be disconnected, having separate parts with no path between them.
Click to reveal answer
beginner
What does it mean for a graph to be cyclic?
A graph is cyclic if it contains at least one cycle, which is a path that starts and ends at the same node without repeating edges or nodes.
Click to reveal answer
beginner
Why is a tree considered a special type of graph?
Because a tree is a connected graph with no cycles and exactly n-1 edges for n nodes, forming a hierarchical structure.
Click to reveal answer
Which of the following is true about trees?
AThey are connected and acyclic graphs.
BThey can have cycles.
CThey are always disconnected.
DThey have more edges than nodes.
✗ Incorrect
Trees are connected graphs without cycles.
What is a cycle in a graph?
AA node with no edges.
BA disconnected node.
CA path that starts and ends at the same node.
DA graph with no edges.
✗ Incorrect
A cycle is a path that begins and ends at the same node.
Can a graph be disconnected?
AYes, graphs can be disconnected.
BNo, graphs are always connected.
COnly trees can be disconnected.
DGraphs must have cycles to be disconnected.
✗ Incorrect
Graphs can have disconnected parts with no path between them.
How many edges does a tree with n nodes have?
An + 1
Bn
C2n
Dn - 1
✗ Incorrect
A tree with n nodes always has n - 1 edges.
Which structure allows cycles?
ATree
BGraph
CBoth graph and tree
DNeither graph nor tree
✗ Incorrect
Graphs can have cycles; trees cannot.
Explain the key structural differences between a graph and a tree.
Think about connectivity and cycles.
You got /4 concepts.
Describe why a tree is considered a special type of graph.
Focus on edges and cycles.
You got /4 concepts.
Practice
(1/5)
1. Which of the following is a key structural difference between a graph and a tree?
easy
A. A tree has no cycles, but a graph can have cycles.
B. A graph always has a root node, but a tree does not.
C. A tree can have multiple edges between the same nodes, but a graph cannot.
D. A graph must be connected, but a tree can be disconnected.
Solution
Step 1: Understand tree structure
A tree is a special type of graph that is connected and has no cycles.
Step 2: Compare with graph properties
Graphs can have cycles and may or may not be connected.
Final Answer:
A tree has no cycles, but a graph can have cycles. -> Option A
Quick Check:
No cycles in tree = key difference [OK]
Hint: Trees never loop back; graphs can have loops [OK]
Common Mistakes:
Thinking graphs always have a root node
Believing trees can have cycles
Confusing connectivity rules between graphs and trees
2. Which syntax correctly represents a tree structure in JavaScript using adjacency lists?
easy
A. const tree = [ [1, 2], [2, 3], [3, 4] ];
B. const tree = { 1: 2, 2: 3, 3: 4 };
C. const tree = { 1: [2, 3], 2: [4], 3: [], 4: [] };
D. const tree = [1, 2, 3, 4];
Solution
Step 1: Identify adjacency list format
An adjacency list uses an object with keys as nodes and values as arrays of connected nodes.
Step 2: Check each option
const tree = { 1: [2, 3], 2: [4], 3: [], 4: [] }; matches adjacency list format for a tree; others do not represent adjacency lists properly.
Final Answer:
const tree = { 1: [2, 3], 2: [4], 3: [], 4: [] }; -> Option C
Quick Check:
Adjacency list uses object with arrays [OK]
Hint: Adjacency list = object keys with array values [OK]
Common Mistakes:
Using arrays of pairs instead of adjacency lists
Assigning single values instead of arrays for neighbors
Confusing array of nodes with adjacency list
3. What will be the output of the following code snippet representing a graph with a cycle?
const graph = { 1: [2], 2: [3], 3: [1] };
function hasCycle(node, visited, stack) {
if (!visited[node]) {
visited[node] = true;
stack[node] = true;
for (const neighbor of graph[node]) {
if (!visited[neighbor] && hasCycle(neighbor, visited, stack)) {
return true;
} else if (stack[neighbor]) {
return true;
}
}
}
stack[node] = false;
return false;
}
console.log(hasCycle(1, {}, {}));
medium
A. false
B. true
C. undefined
D. TypeError
Solution
Step 1: Understand the graph structure
The graph has edges 1->2, 2->3, and 3->1, forming a cycle.
Step 2: Trace the hasCycle function
Starting at node 1, the function detects the cycle when it revisits node 1 in the recursion stack.
Final Answer:
true -> Option B
Quick Check:
Cycle detected = true [OK]
Hint: Cycle detection returns true if node revisited in recursion [OK]
Common Mistakes:
Assuming no cycle because of simple code
Confusing visited and recursion stack usage
Expecting false without tracing recursion
4. Find the error in the following code that tries to check if a tree has cycles:
const tree = { 1: [2], 2: [3], 3: [] };
function hasCycle(node, visited) {
if (visited[node]) return true;
visited[node] = true;
for (const neighbor of tree[node]) {
if (hasCycle(neighbor, visited)) return true;
}
return false;
}
console.log(hasCycle(1, {}));
medium
A. The function does not track recursion stack, so false positives occur.
B. The visited object is not initialized properly.
C. The tree object keys should be numbers, not strings.
D. The function should return false immediately after visiting a node.
Solution
Step 1: Analyze cycle detection logic
The function uses only visited to detect cycles but misses recursion stack tracking.
Step 2: Explain why this causes errors
Without recursion stack, revisiting a node from a different branch may cause false cycle detection.
Final Answer:
The function does not track recursion stack, so false positives occur. -> Option A
Hint: Track recursion stack to avoid false cycle detection [OK]
Common Mistakes:
Ignoring recursion stack importance
Assuming visited alone detects cycles correctly
Confusing object key types
5. Given a graph represented as adjacency lists, how can you verify if it is a tree? Choose the best approach.
hard
A. Check if the graph has cycles and is disconnected.
B. Check if the graph has no cycles regardless of connectivity.
C. Check if the graph has a root node and all nodes have at most two children.
D. Check if the graph is connected and has exactly n-1 edges for n nodes.
Solution
Step 1: Recall tree properties
A tree with n nodes must be connected and have exactly n-1 edges, with no cycles.
Step 2: Analyze options
Check if the graph is connected and has exactly n-1 edges for n nodes. correctly combines connectivity and edge count to verify a tree. Others miss key conditions.
Final Answer:
Check if the graph is connected and has exactly n-1 edges for n nodes. -> Option D
Quick Check:
Connectivity + edges = tree check [OK]
Hint: Tree = connected + edges = nodes minus one [OK]
Common Mistakes:
Ignoring connectivity requirement
Only checking for cycles without edges count
Assuming root or children count defines tree
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.