98. Validate Binary Search Tree
https://leetcode.com/problems/validate-binary-search-tree/
solution
注意二叉搜索树定义:根节点大于所有左子树,小于所有右子树。单个树递归的做法是无法满足定义的
递归也可以采用直观解法思路:中序展开为数组,判断数组是否排好序
class Solution:
def __init__(self):
self.pre = None
def isValidBST(self, root: Optional[TreeNode]) -> bool:
if not root:
return True
# 注意左右需要返回
left = self.isValidBST(root.left)
if self.pre is not None and self.pre >= root.val:
return False
self.pre = root.val
right = self.isValidBST(root.right)
return left and right时间复杂度:O(n) 空间复杂度:O(h)
层序遍历
后序遍历
follow up
958. Check Completeness of a Binary Tree
bfs: 一个是否最后一层的flag (节点个数), 一个是否应该stop的flag (是否有空的左或右节点)
bfs: None也加入到queue中, 最后把None pop出去,检查是否还有额外node.
bfs: 记录层序的上一个node, 如果现在node非空,上一个node为None,则False
Last updated