题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
代码实现
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def HasSubTree(self,pRoot1,pRoot2):
#第一步在树A中查找与根节点的值一样的节点
if not pRoot1 or not pRoot2:#pRoot1空或者pRoot2空
return False
return self.is_subtree(pRoot1,pRoot2) or self.HasSubTree(pRoot1.left,pRoot2) or self.HasSubTree(pRoot1.right,pRoot2)
def is_subtree(self,A,B):
#第二步判断树A中以R为根节点的子树是不是和树B具有相同的结构
if not B:#B空
return True
if not A or A.val!=B.val:
return False
return self.is_subtree(A.left,B.left) and self.is_subtree(A.right,B.right)