day17|二叉树| python的变量范围导致的bug?

今天四道题目

654.最大二叉树

617.合并二叉树

700.二叉搜索树中的搜索

98.验证二叉搜索树

除了验证二叉搜索树其他都一次过。

二叉搜索树这题首先是原理部分

  • 中序遍历的顺序是有序的 (ASC)

然后简单的做法是遍历一次,检查顺序是否有序。

我在做的时候用 py 递归进行遍历,然后每次插入遍历数组前检查是否有序,如果是没序的话提前退出,做一个减枝的操作。但是 python 里面递归函数栈对全局变量的依赖好像不会变(我改了全局的变量,但是过去递归调用的函数里面的变量没有改变)。 应该是这个原因,调试半天没有跳出来? 最后还是硬暴力的遍历了一遍中序的结构。希望有人看到能指点一下。

    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        isValid = True
        res=[]
        def dfs(root):
            nonlocal isValid
            if not root:
                return None
            if not isValid:
                return 
            dfs(root.left)
            if res:
                isValid = res[-1]<root.val
            res.append(root.val)
            dfs(root.right)
        dfs(root)
        return isValid

全部评论

相关推荐

08-19 17:14
长安大学 HRBP
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务