Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.
Example:
Input: 1 \ 3 / 2 Output: 1 Explanation: The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).
Note: There are at least two nodes in this BST.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def getMinimumDifference(self, root):
"""
:type root: TreeNode
:rtype: int
"""
pre, ans = float('-inf'), float('inf')
if root == None:
return
myStack = []
node = root
while node or myStack:
if node: #从根节点开始,一直找它的左子树
myStack.append(node)
node = node.left
else:
node = myStack.pop() #while结束表示当前节点node为空,即前一个节点没有左子树了
ans, pre = min(ans, node.val - pre), node.val
node = node.right
return ans
def getMinimumDifference(self, root):
"""
:type root: TreeNode
:rtype: int
"""
pre, ans = float('-inf'), float('inf')
if root == None:
return
myStack = []
node = root
while node or myStack:
if node: #从根节点开始,一直找它的左子树
myStack.append(node)
node = node.left
else:
node = myStack.pop() #while结束表示当前节点node为空,即前一个节点没有左子树了
ans, pre = min(ans, node.val - pre), node.val
node = node.right
return ans