530. Minimum Absolute Difference in BST
//二叉搜索树随意两个节点差绝对值的最小值
//
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int getMinimumDifference(TreeNode* root) { if(!root) return 0; vector<int> res ; res = InorderTraverse(root); int gap = INT_MAX; int temp = 0; for(int i=0;i<res.size()-1;i++){ temp = abs(res[i+1]-res[i]); if(gap>temp) gap = temp; } return gap; } vector<int> InorderTraverse(TreeNode *tree){ vector<int> res; if(!tree) return res; stack<TreeNode*> stack; //p是遍历指针 TreeNode* p = tree; //栈不空或者p不空时循环 while(p || !stack.empty()){ if(p != NULL){ //存入栈中 stack.push(p); //遍历左子树 p = p->left; } else{ //退栈,访问根节点 p = stack.top(); res.push_back(p->val); stack.pop(); //访问右子树 p = p->right; } }//while return res; } };
.中序遍历得到有序数组,逐个比较差值。