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.

Open in Editor