diff options
Diffstat (limited to 'other/max_diff_node_ancestor.cpp')
-rw-r--r-- | other/max_diff_node_ancestor.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/other/max_diff_node_ancestor.cpp b/other/max_diff_node_ancestor.cpp new file mode 100644 index 0000000..ab96947 --- /dev/null +++ b/other/max_diff_node_ancestor.cpp @@ -0,0 +1,22 @@ +#include "leetcode.h" + +class Solution { +public: + int diff = INT_MIN; + int maxAncestorDiff(TreeNode *root) { + if (!root) + return 0; + int mx = INT_MIN, mn = INT_MAX; + getMax(root, mx, mn); + return diff; + } + +private: + int getMax(TreeNode *root, int mx, int mn) { + mx = max(mx, root->val); + mn = min(mn, root->val); + diff = max(diff, mx - mn); + getMax(root->left, mx, mn); + getMax(root->right, mx, mn); + } +}; |