原题地址(简单)

开始还铁憨憨的以为,把树中相邻的结点的差值都算一遍就完事了。

太憨了。

中序遍历才是正道。

  1. class Solution {
  2. public:
  3. vector<int> v;
  4. int getMinimumDifference(TreeNode* root) {
  5. // 中序遍历
  6. mid(root);
  7. int ans = INT_MAX;
  8. for(int i = 1; i < v.size(); i++)
  9. ans = min(ans, abs(v[i] - v[i-1]));
  10. return ans;
  11. }
  12. void mid(TreeNode* root) {
  13. if(!root) return;
  14. mid(root->left);
  15. v.push_back(root->val);
  16. mid(root->right);
  17. }
  18. };