Back to Practice Dashboard
Top 150 InterviewMedium

Count Good Nodes In Binary Tree

Learn how to solve the 'Count Good Nodes In Binary Tree' problem. This detailed resource details brute force and optimized approaches.

Problem Statement

Medium

Given a binary tree root, a node X in the tree is named good if in the path from root to X there are no nodes with a value greater than X.

Return the number of good nodes in the binary tree.

The tree is represented as a level-order list. Implement a function goodNodes(root: list) -> int.

Constraints
  • The number of nodes in the binary tree is in the range [1, 100000]
  • -10000 <= Node.val <= 10000

Examples

Example 1
Input
[3,1,4,3,None,1,5]
Output
4
Explanation

Root 3 is always good. Node 4 (3<=4, good). Node 3 under node 1 (3<=3, good). Node 5 (3<=4<=5, good). Node 1 is not good (3>1). Node 1 under 4 is not good (4>1). Total: 4 good nodes.

Example 2
Input
[3,3,None,4,2]
Output
3
Explanation

Root 3 is good. Node 3 (left child, 3<=3, good). Node 4 (3<=3<=4, good). Node 2 is not good (3>2). Total: 3.

Example 3
Input
[1]
Output
1
Explanation

The root is always a good node.

Need a Hint?
Perform a recursive tree traversal (DFS) or level-order traversal (BFS) using a queue/stack.
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