[剑指Offer-26][中等][递归] 树的子结构
最后更新于
最后更新于
输入:A = [1,2,3], B = [3,1]
输出:false输入:A = [3,4,5,1,2], B = [4,1]
输出:true# 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 equal(tree1, tree2):
if tree2 is None:
return True
if tree1 is None:
return False
if tree1.val != tree2.val:
return False
return equal(tree1.left, tree2.left) and equal(tree1.right, tree2.right)
def dfs(tree1, tree2):
if tree1 is None or tree2 is None:
return False
if tree1.val != tree2.val:
return dfs(tree1.left, tree2) or dfs(tree1.right, tree2)
if equal(tree1, tree2):
return True
else:
return dfs(tree1.left, tree2) or dfs(tree1.right, tree2)
return dfs(A, B)