Depth-First Search LeetCode Problems: All 289, With Python Solutions

Every problem in this library that LeetCode tags Depth-First Search 289 in total, 216 of them with a complete Python solution, a worked example and the time and space complexity of the approach.

  • 289 problems
  • 39 Easy
  • 185 Medium
  • 65 Hard

How Depth-First Search problems are solved

A tag names the subject, not the method. These pattern hubs cover the techniques that actually solve Depth-First Search problems — each one explains the approach, gives a Python template and states its complexity.

  • Depth-First Search — Follow one path to its end before trying the next — the default way to explore a graph.

Depth-First Search problems by difficulty

Showing the first 200 of 289 problems. Problems with a complete Python solution are listed first, then by ascending problem number.

Easy (36)

#ProblemDifficultyTopics
94Binary Tree Inorder TraversalEasyStack, Tree, Depth-First Search +1
100Same TreeEasyTree, Depth-First Search, Breadth-First Search +1
101Symmetric TreeEasyTree, Depth-First Search, Breadth-First Search +1
104Maximum Depth of Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
110Balanced Binary TreeEasyTree, Depth-First Search, Binary Tree
111Minimum Depth of Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
112Path SumEasyTree, Depth-First Search, Breadth-First Search +1
144Binary Tree Preorder TraversalEasyStack, Tree, Depth-First Search +1
145Binary Tree Postorder TraversalEasyStack, Tree, Depth-First Search +1
226Invert Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
257Binary Tree PathsEasyTree, Depth-First Search, String +2
404Sum of Left LeavesEasyTree, Depth-First Search, Breadth-First Search +1
463Island PerimeterEasyDepth-First Search, Breadth-First Search, Array +1
501Find Mode in Binary Search TreeEasyTree, Depth-First Search, Binary Search Tree +1
530Minimum Absolute Difference in BSTEasyTree, Depth-First Search, Breadth-First Search +2
543Diameter of Binary TreeEasyTree, Depth-First Search, Binary Tree
559Maximum Depth of N-ary TreeEasyTree, Depth-First Search, Breadth-First Search
563Binary Tree TiltEasyTree, Depth-First Search, Binary Tree
572Subtree of Another TreeEasyTree, Depth-First Search, Binary Tree +2
589N-ary Tree Preorder TraversalEasyStack, Tree, Depth-First Search
590N-ary Tree Postorder TraversalEasyStack, Tree, Depth-First Search
617Merge Two Binary TreesEasyTree, Depth-First Search, Breadth-First Search +1
637Average of Levels in Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
653Two Sum IV - Input is a BSTEasyTree, Depth-First Search, Breadth-First Search +4
671Second Minimum Node In a Binary TreeEasyTree, Depth-First Search, Binary Tree
733Flood FillEasyDepth-First Search, Breadth-First Search, Array +1
783Minimum Distance Between BST NodesEasyTree, Depth-First Search, Breadth-First Search +2
872Leaf-Similar TreesEasyTree, Depth-First Search, Binary Tree
897Increasing Order Search TreeEasyStack, Tree, Depth-First Search +2
938Range Sum of BSTEasyTree, Depth-First Search, Binary Search Tree +1
965Univalued Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
993Cousins in Binary TreeEasyTree, Depth-First Search, Breadth-First Search +1
1022Sum of Root To Leaf Binary NumbersEasyTree, Depth-First Search, Binary Tree
1379Find a Corresponding Node of a Binary Tree in a Clone of That TreeEasyTree, Depth-First Search, Breadth-First Search +1
1971Find if Path Exists in GraphEasyDepth-First Search, Breadth-First Search, Union Find +1
2331Evaluate Boolean Binary TreeEasyTree, Depth-First Search, Binary Tree

Medium (127)

#ProblemDifficultyTopics
79Word SearchMediumDepth-First Search, Array, String +2
98Validate Binary Search TreeMediumTree, Depth-First Search, Binary Search Tree +1
99Recover Binary Search TreeMediumTree, Depth-First Search, Binary Search Tree +1
113Path Sum IIMediumTree, Depth-First Search, Backtracking +1
114Flatten Binary Tree to Linked ListMediumStack, Tree, Depth-First Search +2
116Populating Next Right Pointers in Each NodeMediumTree, Depth-First Search, Breadth-First Search +2
117Populating Next Right Pointers in Each Node IIMediumTree, Depth-First Search, Breadth-First Search +2
129Sum Root to Leaf NumbersMediumTree, Depth-First Search, Binary Tree
130Surrounded RegionsMediumDepth-First Search, Breadth-First Search, Union Find +2
133Clone GraphMediumDepth-First Search, Breadth-First Search, Graph +1
199Binary Tree Right Side ViewMediumTree, Depth-First Search, Breadth-First Search +1
200Number of IslandsMediumDepth-First Search, Breadth-First Search, Union Find +2
207Course ScheduleMediumDepth-First Search, Breadth-First Search, Graph +1
210Course Schedule IIMediumDepth-First Search, Breadth-First Search, Graph +1
211Design Add and Search Words Data StructureMediumDepth-First Search, Design, Trie +1
230Kth Smallest Element in a BSTMediumTree, Depth-First Search, Binary Search Tree +1
235Lowest Common Ancestor of a Binary Search TreeMediumTree, Depth-First Search, Binary Search Tree +1
236Lowest Common Ancestor of a Binary TreeMediumTree, Depth-First Search, Binary Tree
310Minimum Height TreesMediumDepth-First Search, Breadth-First Search, Graph +1
337House Robber IIIMediumTree, Depth-First Search, Dynamic Programming +1
341Flatten Nested List IteratorMediumStack, Tree, Depth-First Search +3
365Water and Jug ProblemMediumDepth-First Search, Breadth-First Search, Math
385Mini ParserMediumStack, Depth-First Search, String
386Lexicographical NumbersMediumDepth-First Search, Trie
388Longest Absolute File PathMediumStack, Depth-First Search, String
399Evaluate DivisionMediumDepth-First Search, Breadth-First Search, Union Find +4
417Pacific Atlantic Water FlowMediumDepth-First Search, Breadth-First Search, Array +1
419Battleships in a BoardMediumDepth-First Search, Array, Matrix
430Flatten a Multilevel Doubly Linked ListMediumDepth-First Search, Linked List, Doubly-Linked List
437Path Sum IIIMediumTree, Depth-First Search, Binary Tree
449Serialize and Deserialize BSTMediumTree, Depth-First Search, Breadth-First Search +4
508Most Frequent Subtree SumMediumTree, Depth-First Search, Hash Table +1
513Find Bottom Left Tree ValueMediumTree, Depth-First Search, Breadth-First Search +1
515Find Largest Value in Each Tree RowMediumTree, Depth-First Search, Breadth-First Search +1
529MinesweeperMediumDepth-First Search, Breadth-First Search, Array +1
538Convert BST to Greater TreeMediumTree, Depth-First Search, Binary Search Tree +1
547Number of ProvincesMediumDepth-First Search, Breadth-First Search, Union Find +1
565Array NestingMediumDepth-First Search, Array
606Construct String from Binary TreeMediumTree, Depth-First Search, String +1
623Add One Row to TreeMediumTree, Depth-First Search, Breadth-First Search +1
652Find Duplicate SubtreesMediumTree, Depth-First Search, Hash Table +1
655Print Binary TreeMediumTree, Depth-First Search, Breadth-First Search +1
662Maximum Width of Binary TreeMediumTree, Depth-First Search, Breadth-First Search +1
669Trim a Binary Search TreeMediumTree, Depth-First Search, Binary Search Tree +1
672Bulb Switcher IIMediumBit Manipulation, Depth-First Search, Breadth-First Search +1
676Implement Magic DictionaryMediumDepth-First Search, Design, Trie +2
684Redundant ConnectionMediumDepth-First Search, Breadth-First Search, Union Find +1
687Longest Univalue PathMediumTree, Depth-First Search, Binary Tree
690Employee ImportanceMediumTree, Depth-First Search, Breadth-First Search +2
695Max Area of IslandMediumDepth-First Search, Breadth-First Search, Union Find +2
721Accounts MergeMediumDepth-First Search, Breadth-First Search, Union Find +4
743Network Delay TimeMediumDepth-First Search, Breadth-First Search, Graph +2
785Is Graph Bipartite?MediumDepth-First Search, Breadth-First Search, Union Find +1
787Cheapest Flights Within K StopsMediumDepth-First Search, Breadth-First Search, Graph +3
797All Paths From Source to TargetMediumDepth-First Search, Breadth-First Search, Graph +1
802Find Eventual Safe StatesMediumDepth-First Search, Breadth-First Search, Graph +1
814Binary Tree PruningMediumTree, Depth-First Search, Binary Tree
841Keys and RoomsMediumDepth-First Search, Breadth-First Search, Graph
851Loud and RichMediumDepth-First Search, Graph, Topological Sort +1
863All Nodes Distance K in Binary TreeMediumTree, Depth-First Search, Breadth-First Search +2
865Smallest Subtree with all the Deepest NodesMediumTree, Depth-First Search, Breadth-First Search +2
886Possible BipartitionMediumDepth-First Search, Breadth-First Search, Union Find +1
934Shortest BridgeMediumDepth-First Search, Breadth-First Search, Array +1
947Most Stones Removed with Same Row or ColumnMediumDepth-First Search, Union Find, Graph +1
951Flip Equivalent Binary TreesMediumTree, Depth-First Search, Binary Tree
959Regions Cut By SlashesMediumDepth-First Search, Breadth-First Search, Union Find +3
971Flip Binary Tree To Match Preorder TraversalMediumTree, Depth-First Search, Binary Tree
979Distribute Coins in Binary TreeMediumTree, Depth-First Search, Binary Tree
988Smallest String Starting From LeafMediumTree, Depth-First Search, String +2
1020Number of EnclavesMediumDepth-First Search, Breadth-First Search, Union Find +2
1026Maximum Difference Between Node and AncestorMediumTree, Depth-First Search, Binary Tree
1034Coloring A BorderMediumDepth-First Search, Breadth-First Search, Array +1
1038Binary Search Tree to Greater Sum TreeMediumTree, Depth-First Search, Binary Search Tree +1
1042Flower Planting With No AdjacentMediumDepth-First Search, Breadth-First Search, Graph
1080Insufficient Nodes in Root to Leaf PathsMediumTree, Depth-First Search, Binary Tree
1110Delete Nodes And Return ForestMediumTree, Depth-First Search, Array +2
1123Lowest Common Ancestor of Deepest LeavesMediumTree, Depth-First Search, Breadth-First Search +2
1145Binary Tree Coloring GameMediumTree, Depth-First Search, Binary Tree
1161Maximum Level Sum of a Binary TreeMediumTree, Depth-First Search, Breadth-First Search +1
1202Smallest String With SwapsMediumDepth-First Search, Breadth-First Search, Union Find +4
1233Remove Sub-Folders from the FilesystemMediumDepth-First Search, Trie, Array +1
1254Number of Closed IslandsMediumDepth-First Search, Breadth-First Search, Union Find +2
1261Find Elements in a Contaminated Binary TreeMediumTree, Depth-First Search, Breadth-First Search +3
1267Count Servers that CommunicateMediumDepth-First Search, Breadth-First Search, Union Find +3
1302Deepest Leaves SumMediumTree, Depth-First Search, Breadth-First Search +1
1305All Elements in Two Binary Search TreesMediumTree, Depth-First Search, Binary Search Tree +2
1306Jump Game IIIMediumDepth-First Search, Breadth-First Search, Array
1315Sum of Nodes with Even-Valued GrandparentMediumTree, Depth-First Search, Breadth-First Search +1
1319Number of Operations to Make Network ConnectedMediumDepth-First Search, Breadth-First Search, Union Find +1
1325Delete Leaves With a Given ValueMediumTree, Depth-First Search, Binary Tree
1339Maximum Product of Splitted Binary TreeMediumTree, Depth-First Search, Binary Tree
1361Validate Binary Tree NodesMediumTree, Depth-First Search, Breadth-First Search +3
1367Linked List in Binary TreeMediumTree, Depth-First Search, Linked List +1
1372Longest ZigZag Path in a Binary TreeMediumTree, Depth-First Search, Dynamic Programming +1
1376Time Needed to Inform All EmployeesMediumTree, Depth-First Search, Breadth-First Search
1382Balance a Binary Search TreeMediumGreedy, Tree, Depth-First Search +3
1391Check if There is a Valid Path in a GridMediumDepth-First Search, Breadth-First Search, Union Find +2
1443Minimum Time to Collect All Apples in a TreeMediumTree, Depth-First Search, Breadth-First Search +1
1448Count Good Nodes in Binary TreeMediumTree, Depth-First Search, Breadth-First Search +1
1457Pseudo-Palindromic Paths in a Binary TreeMediumBit Manipulation, Tree, Depth-First Search +2
1462Course Schedule IVMediumDepth-First Search, Breadth-First Search, Graph +1
1466Reorder Routes to Make All Paths Lead to the City ZeroMediumDepth-First Search, Breadth-First Search, Graph
1519Number of Nodes in the Sub-Tree With the Same LabelMediumTree, Depth-First Search, Breadth-First Search +2
1530Number of Good Leaf Nodes PairsMediumTree, Depth-First Search, Binary Tree
1559Detect Cycles in 2D GridMediumDepth-First Search, Breadth-First Search, Union Find +2
1600Throne InheritanceMediumTree, Depth-First Search, Design +1
1625Lexicographically Smallest String After Applying OperationsMediumDepth-First Search, Breadth-First Search, String +1
1631Path With Minimum EffortMediumDepth-First Search, Breadth-First Search, Union Find +4
1722Minimize Hamming Distance After Swap OperationsMediumDepth-First Search, Union Find, Array
1743Restore the Array From Adjacent PairsMediumDepth-First Search, Array, Hash Table
1905Count Sub IslandsMediumDepth-First Search, Breadth-First Search, Union Find +2
1992Find All Groups of FarmlandMediumDepth-First Search, Breadth-First Search, Array +1
1993Operations on TreeMediumTree, Depth-First Search, Breadth-First Search +3
2049Count Nodes With the Highest ScoreMediumTree, Depth-First Search, Array +1
2096Step-By-Step Directions From a Binary Tree Node to AnotherMediumTree, Depth-First Search, String +1
2101Detonate the Maximum BombsMediumDepth-First Search, Breadth-First Search, Graph +3
2192All Ancestors of a Node in a Directed Acyclic GraphMediumDepth-First Search, Breadth-First Search, Graph +1
2265Count Nodes Equal to Average of SubtreeMediumTree, Depth-First Search, Binary Tree
2316Count Unreachable Pairs of Nodes in an Undirected GraphMediumDepth-First Search, Breadth-First Search, Union Find +1
2359Find Closest Node to Given Two NodesMediumDepth-First Search, Graph
2368Reachable Nodes With RestrictionsMediumTree, Depth-First Search, Breadth-First Search +4
2385Amount of Time for Binary Tree to Be InfectedMediumTree, Depth-First Search, Breadth-First Search +2
2415Reverse Odd Levels of Binary TreeMediumTree, Depth-First Search, Breadth-First Search +1
2467Most Profitable Path in a TreeMediumTree, Depth-First Search, Breadth-First Search +2
2476Closest Nodes Queries in a Binary Search TreeMediumTree, Depth-First Search, Binary Search Tree +3
2477Minimum Fuel Cost to Report to the CapitalMediumTree, Depth-First Search, Breadth-First Search +1
2492Minimum Score of a Path Between Two CitiesMediumDepth-First Search, Breadth-First Search, Union Find +1

Hard (37)

#ProblemDifficultyTopics
124Binary Tree Maximum Path SumHardTree, Depth-First Search, Dynamic Programming +1
297Serialize and Deserialize Binary TreeHardTree, Depth-First Search, Breadth-First Search +3
329Longest Increasing Path in a MatrixHardDepth-First Search, Breadth-First Search, Graph +5
332Reconstruct ItineraryHardDepth-First Search, Graph, Eulerian Circuit
472Concatenated WordsHardDepth-First Search, Trie, Array +3
514Freedom TrailHardDepth-First Search, Breadth-First Search, String +1
685Redundant Connection IIHardDepth-First Search, Breadth-First Search, Union Find +1
749Contain VirusHardDepth-First Search, Breadth-First Search, Array +2
753Cracking the SafeHardDepth-First Search, Graph, Eulerian Circuit
765Couples Holding HandsHardGreedy, Depth-First Search, Breadth-First Search +2
778Swim in Rising WaterHardDepth-First Search, Breadth-First Search, Union Find +4
827Making A Large IslandHardDepth-First Search, Breadth-First Search, Union Find +2
834Sum of Distances in TreeHardTree, Depth-First Search, Graph +1
839Similar String GroupsHardDepth-First Search, Breadth-First Search, Union Find +3
924Minimize Malware SpreadHardDepth-First Search, Breadth-First Search, Union Find +3
928Minimize Malware Spread IIHardDepth-First Search, Breadth-First Search, Union Find +3
968Binary Tree CamerasHardTree, Depth-First Search, Dynamic Programming +1
987Vertical Order Traversal of a Binary TreeHardTree, Depth-First Search, Breadth-First Search +3
1028Recover a Tree From Preorder TraversalHardTree, Depth-First Search, String +1
1036Escape a Large MazeHardDepth-First Search, Breadth-First Search, Array +1
1192Critical Connections in a NetworkHardDepth-First Search, Graph, Biconnected Component
1203Sort Items by Groups Respecting DependenciesHardDepth-First Search, Breadth-First Search, Graph +1
1373Maximum Sum BST in Binary TreeHardTree, Depth-First Search, Binary Search Tree +2
1377Frog Position After T SecondsHardTree, Depth-First Search, Breadth-First Search +1
1483Kth Ancestor of a Tree NodeHardBit Manipulation, Tree, Depth-First Search +4
1568Minimum Number of Days to Disconnect IslandHardDepth-First Search, Breadth-First Search, Array +2
1766Tree of CoprimesHardTree, Depth-First Search, Array +2
1970Last Day Where You Can Still CrossHardDepth-First Search, Breadth-First Search, Union Find +3
2003Smallest Missing Genetic Value in Each SubtreeHardTree, Depth-First Search, Union Find +1
2092Find All People With SecretHardDepth-First Search, Breadth-First Search, Union Find +2
2127Maximum Employees to Be Invited to a MeetingHardDepth-First Search, Graph, Topological Sort
2246Longest Path With Different Adjacent CharactersHardTree, Depth-First Search, Graph +3
2322Minimum Score After Removals on a TreeHardBit Manipulation, Tree, Depth-First Search +1
2328Number of Increasing Paths in a GridHardDepth-First Search, Breadth-First Search, Graph +5
2360Longest Cycle in a GraphHardDepth-First Search, Breadth-First Search, Graph +1
2440Create Components With Same ValueHardTree, Depth-First Search, Array +2
2458Height of Binary Tree After Subtree Removal QueriesHardTree, Depth-First Search, Breadth-First Search +2

When the Depth-First Search problem arrives live

Stealth Interview is a desktop app for macOS and Windows. It reads the coding problem off your screen, returns a working solution with a step-by-step explanation and its time and space complexity, and transcribes what the interviewer is saying — while staying invisible to screen sharing.