判断t1树中是否有与t2树完全相同的子树

last modify

判断t1树中是否有与t2树完全相同的子树_牛客题霸_牛客网

问题简述

给定彼此独立的两棵二叉树,树上的节点值两两不同,判断 t1 树是否有与 t2 树完全相同的子树。
子树指一棵树的某个节点的全部后继节点(子结构不要求全部后继节点)

思路1:前序遍历

  • 定义 dfs(t1, t2) 判断两个树是否相同;

  • 然后对 root1 的每个节点操作 dfs

  • 时间复杂度 O(MN)

Python
class Solution:
    def isContains(self , root1: TreeNode, root2: TreeNode) -> bool:
        
        def dfs(r1, r2):
            if not r1 and not r2: return True
            if not r1 or not r2: return False
            
            return r1.val == r2.val and dfs(r1.left, r2.left) and dfs(r1.right, r2.right)
        
        if not root1: return False
        return dfs(root1, root2) \
            or self.isContains(root1.left, root2) \
            or self.isContains(root1.right, root2)

思路2:前序序列化后进行字符串比较

Python

Last updated