Greatest difference Left and Right subtree count Node
public TreeNode solve(TreeNode root){
TreeNode[] solution = TreeNode[1]; //avoid pass by ref
int[] globalDiff = {Integer.MIN_VALUE};
maxlrdiffNode(root, globalDiff, solution);
return solution[0];
}
public int maxlrdiffNode(TreeNode root, int[] globalDiff, TreeNode[] sol){
if (root == null) return 0;
int leftCount = maxlrdiffNode(root.left);
int rightCount = maxlrdiffNode(root.right);
//check against global max
int curDiff = Math.abs(leftCount - rightCount);
if (curDiff > globalDiff[0]){
globalDiff[0] = curDiff;
sol[0] = root;
}
return leftCount + rightCount + 1;
}
Last updated