Question
In a binary tree, if in the path from root to the node A, there is no node with greater value than A’s, this node A is visible. We need to count the number of visible nodes in a binary tree. For example, in the following tree:
5
/ \
3 10
/ \ /
20 21 1
There are four (4) visible nodes: 5, 20, 21, and 10.
Solution
This is an easy question. A solution is available here.
Code
written by me
public int countVisible(TreeNode root) {
return helper(root, Integer.MIN_VALUE);
}
private int helper(TreeNode node, int ancesterMax) {
if (node == null) {
return 0;
}
int newMax = Math.max(ancesterMax, node.val);
if (node.val > ancesterMax) {
return 1 + helper(node.left, newMax) + helper(node.right, newMax);
} else {
return helper(node.left, newMax) + helper(node.right, newMax);
}
}