二叉树问题---寻找搜索二叉树中两个错误的节点

题目:
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请找出这两个错误的节点并返回。已知二叉树中所有节点的值都不一样,给定二叉树的头节点,返回一个长度为2的二叉树节点类型的数组errs。

def getTwoErrorNode(root):
    errs = [None for i in range(2)]
    if not root:
        return errs
    stack = []
    pre = None
    while root or stack:
        if root:
            stack.append(root)
            root = root.left
        else:
            root = stack.pop()
            if pre and pre.val > root.val:
                if errs[0] == None:
                    errs[0] = pre
                errs[1] = root
            pre = root
            root = root.right
    return errs

你可能感兴趣的:(数据结构与算法)