输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

例如:
给定的树 A:

给定的树 B:

返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。

示例 1:
输入:A = [1,2,3], B = [3,1]
输出:false

示例 2:
输入:A = [3,4,5,1,2], B = [4,1]
输出:true

限制:

  • 0 <= 节点个数 <= 10000

Python 解答:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        def traverse(root, B):
            if not root or not B:
                return False
            else:
                if isContain(root, B):
                    return True
                else:
                    return traverse(root.left, B) or traverse(root.right, B)
        def isContain(A, B):
            if A == None and B != None:
                return False
            elif B == None:
                return True
            elif A != None and B != None:
                if A.val != B.val:
                    return False
                else:
                    return isContain(A.left, B.left) and isContain(A.right, B.right)
        return traverse(A, B)
最后修改日期: 2021年4月4日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。