Minimum-Distance-Between-BST-Nodes

题目地址

LeetCode#783 Minimum Distance Between BST Nodes

题目描述

  Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the values of any two different nodes in the tree.

Example :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Input: root = [4,2,6,1,3,null,null]
Output: 1
Explanation:
Note that root is a TreeNode object, not an array.

The given tree [4,2,6,1,3,null,null] is represented by the following diagram:

4
/ \
2 6
/ \
1 3

while the minimum difference in this tree is 1, it occurs between node 1 and node 2, also between node 3 and node 2.

Note:

  1. The size of the BST will be between 2 and 100.
  2. The BST is always valid, each node’s value is an integer, and each node’s value is different.

解题思路

  刚开始想复杂了。。

  直接将树的所有节点值存入数组并排序,然后找到相差最小的数字返回其差值。

解题代码【.CPP】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* 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 {
void getValuse(TreeNode* root , vector<int>& values ){
if(!root) return;
values.push_back(root->val);
getValuse(root->left,values);
getValuse(root->right,values);
}

public:
int minDiffInBST(TreeNode* root) {
vector<int> values(0);
getValuse(root , values);
sort(values.begin() , values.end());
int ret = INT_MAX;
for (int i = 1; i < values.size(); ++i) {
ret = min(ret , values[i] - values[i-1]);
}
return ret;
}
};
0%