• [Leetcode]@python 99. Recover Binary Search Tree


    题目链接

    https://leetcode.com/problems/recover-binary-search-tree/

    题目原文

    Two elements of a binary search tree (BST) are swapped by mistake.

    Recover the tree without changing its structure.

    题目大意

    给定一棵二叉搜索树,其中有两个元素的位置互换了,需要恢复原本的二叉树

    解题思路

    参考https://leetcode.com/discuss/61332/99%25-python-solution

    第一次遇到逆序记录prev和cur
    如果第二次遇到逆序只记录cur
    最后swap prev和cur

    代码

    # Definition for a binary tree node.
    class TreeNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    
    class Solution(object):
        def recoverTree(self, root):
            """
            :type root: TreeNode
            :rtype: void Do not return anything, modify root in-place instead.
            """
            self.inorder(root)
            self.n1.val, self.n2.val = self.n2.val, self.n1.val
    
        def __init__(self):
            self.n1 = None
            self.n2 = None
            self.pre = None
    
        def inorder(self, root):
            if not root:
                return root
    
            self.inorder(root.left)
            if not self.pre:
                self.pre = root
            else:
                if not self.n1 and root.val < self.pre.val:
                    self.n1 = self.pre
                if self.n1 and root.val < self.pre.val:
                    self.n2 = root
                else:
                    self.pre = root
            self.inorder(root.right)
    
  • 相关阅读:
    Unity
    Unity
    Unity
    Unity
    Unity项目
    Unity
    UnityShader
    Unity
    【数据结构与算法】链表——奇偶链表
    【数据结构与算法】链表——分隔链表
  • 原文地址:https://www.cnblogs.com/slurm/p/5221594.html
Copyright © 2020-2023  润新知