输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值
思路很直接,遍历所有A树所有的结点,只要有一个结点可以与B的val一样,就将该节点和B的结构进行一一比较,一个不等就是错的。
注意递归的题目都必须有返回值,保证层层往上返回的时候有值的传递。
class Solution(object):
def equal(self, A, B):
if not B:
return True
if not A: # 过了B,说明B还有。
return False
if A.val != B.val:
return False
return self.equal(A.left, B.left) and self.equal(A.right, B.right)
def isSubStructure(self, A, B):
"""
:type A: TreeNode
:type B: TreeNode
:rtype: bool
"""
if not A:
return False
if not B:
return False
if A.val == B.val:
if self.bianli(A, B):
return True
return self.isSubStructure(A.left, B) or self.isSubStructure(A.right, B)