二叉树: 判断子树
#! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "Victor" # Date: 2020/7/8 # 假定s是大的树,判断t是否为s的子树, 输入isSubTree(s, t) # 主要思路, 递归判断问题 # Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solution(object): def isSubTree(self, s, t): """ #用于判断的主函数,递归得遍历s的每一个结点,并将其作为新的根节点,再与t进行比较 #使用or相连,即其中只要有一个s的子树与t相同,则返回True :type s: TreeNode :type t: TreeNode :rtype: bool """ if not s or not t: return False return self.isEqual(s,t) or self.isSubtree(s.left,t) or self.isSubtree(s.right,t) def isEqual(self,S,T): """ 以S为根节点,判断S和T是否相等, 递归实现 如果两棵树的左边=左边, 右边=右边, 两个条件都符合 :param S: :param T: :return: """ if not S and not T: return True if S and T: if S.val==T.val: return self.isEqual(S.left,T.left) and self.isEqual(S.right,T.right) else: return False else: return False