五月六月刷题总结
二叉树
prac98 验证二叉搜索树(中等)
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
构造辅助函数helper(node,lower,higher),并采用递归左子树和递归右子树的方法。
# -*- encoding: utf-8 -*-
"""
@File : prac98.py
@Time : 2020/5/5 8:43 上午
@Author : zhengjiani
@Email : [email protected]
@Software: PyCharm
"""
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
def helper(node,lower=float('-inf'),upper=float('inf')):
if not node:
return True
val = node.val
if val <= lower or val >= upper:
return False
if not helper(node.val,val,upper):
return False
if not helper(node.val,lower,val):
return False
return True
return helper(root)
prac572 另一个树的子树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subtree-of-another-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
采用先序遍历转化为字符串,并判断两个字符串是否含有包含关系。
# -*- encoding: utf-8 -*-
"""
@File : prac572.py
@Time : 2020/5/7 3:03 下午
@Author : zhengjiani
@Email : [email protected]
@Software: PyCharm
"""
# 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
class Solution:
"""DFS序列上做串匹配,先序遍历,加入null值"""
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
ss = self.inorder(s)
st = self.inorder(t)
return st in ss
#先序遍历
def inorder(self,root):
if not root:
return '#'
return '*'+str(root.val)+str(root.left)+str(root.right)
prac236 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x
的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
最近公共祖先判别公式:
最近公共祖先(flson&&frson) || ((x==p ||x ==q)&&(flson||frson))
# -*- encoding: utf-8 -*-
"""
@File : prac236.py
@Time : 2020/5/10 9:29 上午
@Author : zhengjiani
@Email : [email protected]
@Software: PyCharm
"""
from collections import deque
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.