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;
    }
};

 

.中序遍历得到有序数组,逐个比较差值。

 

posted on 2017-03-05 00:27  123_123  阅读(81)  评论(0编辑  收藏  举报