树530. 二叉搜索树的最小绝对差
Posted ocpc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树530. 二叉搜索树的最小绝对差相关的知识,希望对你有一定的参考价值。
题目:
解法:
中序遍历得到一个升序序列,将遍历的结果存在一个数组val中,然后用另一个数组diff存数组val中前后元素的差值,输出其中的最小值。
代码略微繁琐,欢迎提出优化建议。
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 13 void inOrder(TreeNode *root, vector<int> &ret) 14 { 15 if (NULL == root) 16 { 17 return; 18 } 19 20 inOrder(root->left, ret); 21 ret.push_back(root->val); 22 inOrder(root->right, ret); 23 } 24 25 int getMinimumDifference(TreeNode* root) 26 { 27 int res = INT_MAX; 28 vector<int> ret; 29 vector<int> diff; 30 31 inOrder(root, ret); 32 33 for (int i = 1; i < ret.size(); ++i) 34 { 35 diff.push_back(ret[i] - ret[i-1]); 36 } 37 for (int i = 0; i < diff.size(); ++i) 38 { 39 res = std::min(res, diff[i]); 40 } 41 42 return res; 43 } 44 };
以上是关于树530. 二叉搜索树的最小绝对差的主要内容,如果未能解决你的问题,请参考以下文章