给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

    示例:

    1. 输入:
    2. 1
    3. \
    4. 3
    5. /
    6. 2
    7. 输出:
    8. 1
    9. 解释:
    10. 最小绝对差为 1,其中 2 1 的差的绝对值为 1(或者 2 3)。


    提示:

    • 树中至少有 2 个节点。
    • 本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同
      1. /**
      2. * Definition for a binary tree node.
      3. * struct TreeNode {
      4. * int val;
      5. * TreeNode *left;
      6. * TreeNode *right;
      7. * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
      8. * };
      9. */
      10. class Solution {
      11. public:
      12. vector<int> container;
      13. int getMinimumDifference(TreeNode* root) {
      14. dfs(root);
      15. sort(container.begin(), container.end());
      16. if(container.size() < 2 ){
      17. return 0;
      18. }
      19. int minAbs = abs(container[0] - container[1]);
      20. for(int i = 1;i<container.size();i++){
      21. minAbs = min(minAbs, abs(container[i] - container[i-1]));
      22. }
      23. return minAbs;
      24. }
      25. void dfs(TreeNode* root){
      26. if(root == NULL) return;
      27. container.push_back(root->val);
      28. dfs(root->left);
      29. dfs(root->right);
      30. }
      31. };