classSolution{public:intmaxAncestorDiff(TreeNode*root){returnmaxAncestorDiff(root,root->val,root->val);}private:// Returns |max - min| of the tree w/ rootintmaxAncestorDiff(TreeNode*root,intmini,intmaxi){if(root==nullptr)return0;mini=min(mini,root->val);maxi=max(maxi,root->val);constintl=maxAncestorDiff(root->left,mini,maxi);constintr=maxAncestorDiff(root->right,mini,maxi);returnmax({maxi-mini,l,r});}};
classSolution{publicintmaxAncestorDiff(TreeNoderoot){returnmaxAncestorDiff(root,root.val,root.val);}// Returns |max - min| of the tree w/ rootprivateintmaxAncestorDiff(TreeNoderoot,intmin,intmax){if(root==null)return0;min=Math.min(min,root.val);max=Math.max(max,root.val);finalintl=maxAncestorDiff(root.left,min,max);finalintr=maxAncestorDiff(root.right,min,max);returnMath.max(max-min,Math.max(l,r));}}