题解 | #找到搜索二叉树中两个错误的节点#

找到搜索二叉树中两个错误的节点

http://www.nowcoder.com/practice/4582efa5ffe949cc80c136eeb78795d6

首先中序遍历搜索树,应为连续递增数列,先后找出位置错误的两个数字,从前往后找其中较大的数字,从后往前找较小的数字,最后升序输出

class Solution:
    def search_tree(self, root):
        if root == None:
            return []
        list_node = self.search_tree(root.left)
        list_node.append(root.val)
        list_node += self.search_tree(root.right)
        return list_node
    def findError(self , root: TreeNode) -> List[int]:
        # write code here
        list1 = self.search_tree(root)
        for i in range(len(list1)-1):
            if list1[i] > list1[i+1]:
                a = list1[i]
                break
        for i in range(len(list1)-1, -1, -1):
            if list1[i] < list1[i-1]:
                b = list1[i]
                break
        return [min(a, b), max(a, b)]

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务