尝试使用 Python3 中的顺序遍历来验证二叉搜索树我的方法有什么问题?

问题描述

尝试用 python 解决 https://leetcode.com/problems/validate-binary-search-tree/ 问题。

我的实现看起来像这样:

# DeFinition for a binary tree node.
# class TreeNode:
#     def __init__(self,val=0,left=None,right=None):
#         self.val = val
#         self.left = left
#         self.right = right
import math
class Solution:
    def isValidBST(self,root: TreeNode) -> bool:
        self.prev = -math.inf
        def in_order(root):
            if not root:
                return True
            in_order(root.left)
            if root.val <=self.prev:
                return False
            self.prev = root.val
            print(self.prev,root.val)
            in_order(root.right)
        return in_order(root)

输入 [2,1,3] 失败并返回 False。

但是如果我将代码更改为:

# DeFinition for a binary tree node.
# class TreeNode:
#     def __init__(self,root: TreeNode) -> bool:
        self.prev = -math.inf
        def in_order(root):
            if not root:
                return True
            if not in_order(root.left):
                return False
            if root.val <=self.prev:
                return False
            self.prev = root.val
            print(self.prev,root.val)
            return in_order(root.right)
        return in_order(root)

它有效!!!

对结果真的很困惑。请帮帮我!!!

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)