1. 程式人生 > >leetcode 783. Minimum Distance Between BST Nodes ---中序遍歷

leetcode 783. Minimum Distance Between BST Nodes ---中序遍歷

lee python etc 記錄 imu solution true val eno

過年晚上無聊,233333333

題解:

BST樹的中序遍歷是有序的,遍歷過程中,記錄前一個值,然後和當前值比較,來更新最小的minimum distance

註意python參數傳遞時候,像list這些object是傳引用,單獨int的數是傳值的

 void getans(TreeNode* root,int &pre,int &ans)
{
    if(root==NULL) return;
    getans(root->left,pre,ans);
    if(pre!=INT_MAX)
        ans=min(ans,abs(pre-root->val));
    pre=root->val;
    getans(root->right,pre,ans);
}
int minDiffInBST(TreeNode* root) {
    int ans=INT_MAX,pre=INT_MAX;
    getans(root,pre,ans);
    return ans;
}

  

import sys
class Solution(object):
    def getans(self,root,pre,ans):
        if root==None:
            return ;
        self.getans(root.left,pre,ans);
        if pre[0]!=sys.maxint:
            ans[0]=min(ans[0],abs(pre[0]-root.val));
        pre[0]=root.val;
        self.getans(root.right,pre,ans);

    def minDiffInBST(self,root):
        """
        :type root: TreeNode
        :rtype: int
        """
        ans=[sys.maxint]
        pre=[sys.maxint]
        self.getans(root,pre,ans)
        return ans[0];

  

leetcode 783. Minimum Distance Between BST Nodes ---中序遍歷