Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.
Example:
Input: 1 3 / 2 Output: 1 Explanation: The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).
Note: There are at least two nodes in this BST.
#include <iostream> #include <vector> #include <limits.h> using namespace std; class Solution { public: int getMinimumDifference(TreeNode* root) { if(!root) return 0; vector<int> InOrderArray; getInOrderArray(InOrderArray, root); //INT_MAX定义 //zhidao.baidu.com/question/294243885.html int res = INT_MAX; for(int i=1; i<InOrderArray.size(); i++){//遍历数组得到相邻两个元素最小的差 if(InOrderArray[i] - InOrderArray[i-1] < res) res = InOrderArray[i] - InOrderArray[i-1]; } return res; } void getInOrderArray(vector<int> &InOrderArray, TreeNode* root){//通过中序遍历得到一个升序数组 if(!root) return; getInOrderArray(InOrderArray, root->left); InOrderArray.push_back(root->val); getInOrderArray(InOrderArray, root->right); } }; int main() { cout << "Hello world!" << endl; return 0; }