"""
Exercise 2: Minimum Absolute Difference in BST (LeetCode 530)

Return the minimum difference between the values of any two nodes. Inorder
traversal is sorted, so compare each value with the previous one.
"""

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val, self.left, self.right = val, left, right

def get_minimum_difference(root):
    # TODO
    return -1


# --- self-check: do not modify below this line ---
def build(level):
    if not level or level[0] is None:
        return None
    root = TreeNode(level[0]); q = [root]; i = 1
    while q and i < len(level):
        n = q.pop(0)
        if i < len(level) and level[i] is not None:
            n.left = TreeNode(level[i]); q.append(n.left)
        i += 1
        if i < len(level) and level[i] is not None:
            n.right = TreeNode(level[i]); q.append(n.right)
        i += 1
    return root

a = get_minimum_difference(build([4, 2, 6, 1, 3]))
b = get_minimum_difference(build([1, 0, 48, None, None, 12, 49]))
print(a, b)
print("PASS" if a == 1 and b == 1 else "FAIL")
