avatar

Catalog
面试题26. 树的子结构

题目描述

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

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

解题思路

递归求解
二叉树就是递归结构,满足子树是子结构,则整个二叉树也是子结构

代码

class Solution:
    def subcheck(self, A, B):
        if not A:
            return False
        if A.val != B.val:
            return False
        if B.left:
            if not self.subcheck(A.left, B.left):
                return False
        if B.right:
            if not self.subcheck(A.right, B.right):
                return False
        return True


def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
    if not A or not B:
        return False
    if A.val == B.val:
        if self.subcheck(A, B):
            return True
    if A.left:
        if self.isSubStructure(A.left, B):
            return True
    if A.right:
        if self.isSubStructure(A.right, B):
            return True
    return False
Author: kim yhow
Link: http://yoursite.com/2020/03/28/面试题26-树的子结构/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶