https://leetcode.com/problems/minimum-absolute-difference-in-bst/

  • This question prefer inorder traverse for to compare neighbors and non-neignbors but close branches.

    1. Use inorder traverse:

    ```go //28 ms 25.2 MB

/**

  • Definition for a binary tree node.
  • struct TreeNode {
  • int val;
  • TreeNode *left;
  • TreeNode *right;
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  • TreeNode(int x, TreeNode left, TreeNode right) : val(x), left(left), right(right) {}
  • }; / class Solution { public: int getMinimumDifference(TreeNode root) {

    1. int min_diff = INT_MAX;
    2. int prev = -1;
    3. inorder(root, min_diff, prev);
    4. return min_diff;

    }

private: void inorder(TreeNode* root, int& min_diff, int& prev) {

    if(root->left)
        inorder(root->left, min_diff, prev);   

    //cout << root->val << " " << prev << endl;

    if(prev >= 0) min_diff = min(min_diff, root->val - prev);
    prev = root->val;

    if(root->right)
        inorder(root->right, min_diff, prev);
}

}; ```