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 :

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.

求二叉搜索树任意两节点之间的差值,要求最小

C++(4ms):
 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     int res = INT_MAX ;
13     int pre = -1 ;
14     int minDiffInBST(TreeNode* root) {
15         if (root->left != NULL)
16             minDiffInBST(root->left) ; 
17         if (pre >= 0)
18             res = min(res , root->val - pre) ;
19         pre = root->val ;
20         if (root->right != NULL)
21             minDiffInBST(root->right) ; 
22         return res ;
23     }
24 };

 

 
posted @ 2018-03-20 15:18  __Meng  阅读(408)  评论(0编辑  收藏  举报