# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def recoverTree(self, root: TreeNode) -> None:
"""
Do not return anything, modify root in-place instead.
"""
FirstNode = None
SecondNode = None
pre = TreeNode(float("-inf"))
p = root
stack = []
while p or stack:
while p:
stack.append(p)
p = p.left
p = stack.pop()
if not FirstNode and pre.val > p.val:
FirstNode = pre
if FirstNode and pre.val > p.val:
SecondNode = p
pre = p
p = p.right
FirstNode.val, SecondNode.val = SecondNode.val, FirstNode.val
leetcode刷题python之恢复二叉搜索树
最新推荐文章于 2022-03-23 18:21:14 发布