Count Good Nodes in Binary Tree
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.
Input: root = [3,1,4,3,null,1,5]
Explanation: Nodes in blue are good.
Root Node (3) is always a good node.
Node 4 -> (3,4) is the maximum value in the path starting from the root.
Node 5 -> (3,4,5) is the maximum value in the path
Node 3 -> (3,1,3) is the maximum value in the path.
Input: root = [3,3,null,4,2]
Explanation: Node 2 -> (3, 3, 2) is not good, because "3" is higher than it.
Input: root = 
Explanation: Root is considered as good.
- The number of nodes in the binary tree is in the range
- Each node’s value is between
We can solve this problem using recursion which is simple and less no of line of codes, another using simple BFS where we will be processing each node by level order.
Run time: O(N) as we traverse the entire tree once.
Space: O(h), where h is height of the tree.