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