Back to Practice Dashboard
Top 150 InterviewMedium
Graph Valid Tree
Learn how to solve the 'Graph Valid Tree' problem. This detailed resource details brute force and optimized approaches.
Problem Statement
Medium
You have a graph of n nodes labeled from 0 to n - 1. You are given an integer n and a list of edges where edges[i] = [ai, bi] indicates that there is an undirected edge between nodes ai and bi in the graph.
Return True if the edges of the given graph make up a valid tree, and False otherwise.
Write a function validTree(n: int, edges: List[List[int]]) -> bool.
Constraints
- •1 <= n <= 2000
- •0 <= len(edges) <= 5000
- •edges[i].length == 2
- •0 <= ai, bi < n
Examples
Example 1
Input
n = 5, edges = [[0,1],[0,2],[0,3],[1,4]]
Output
True
Explanation
The graph is fully connected and contains no cycles, so it is a valid tree.
Example 2
Input
n = 5, edges = [[0,1],[1,2],[2,3],[1,3],[1,4]]
Output
False
Explanation
The graph contains a cycle 1-2-3-1, so it is not a valid tree.
Need a Hint?
Represent graph node connections as an adjacency list/matrix, then use standard BFS or DFS graph traversal.
Edge Cases to Watch
- Empty list or null input variables
- Single item lists/arrays
- Extremely large input bounds causing integer or stack overflow
Ready to Solve?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.