LeetCode 1448: Count Good Nodes In Binary Tree — Step-by-Step Visual Trace
Medium — Binary Tree | Depth-First Search | Recursion | Tree Traversal
The Problem
Count the number of ‘good’ nodes in a binary tree, where a node is considered good if there are no nodes with a value greater than it in the path from root to that node.
Approach
Use depth-first search (DFS) to traverse the tree while keeping track of the maximum value seen along the current path. For each node, check if its value is greater than or equal to the current maximum to determine if it’s a good node.
Time: O(n) · Space: O(h)
Code
class Solution:
def goodNodes(self, root: TreeNode) -> int:
def dfs(node, max_val):
if not node:
return 0
if node.val >= max_val:
max_val = node.val
count = 1
else:
count = 0
count += dfs(node.left, max_val)
count += dfs(node.right, max_val)
return count
return dfs(root, float("-inf"))
Watch It Run
Try it yourself: Open TraceLit and step through every line.
Built with TraceLit — the visual algorithm tracer for LeetCode practice.
Comments