题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
解题思路:判断以A的根节点与B的根节点为公共结点的两棵子树是否为子结构关系,并递归的判断A的左节点与右节点。注意题目要求是子结构,不是子树,子树需要要求直到A叶子节点都相同。
Python代码:
# -*- 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):
# write code here
if not pRoot1 or not pRoot2:
return False
return self.issame(pRoot1,pRoot2) or self.HasSubtree(pRoot1.left,pRoot2) or self.HasSubtree(pRoot1.right,pRoot2)
def issame(self,r1,r2):
if not r2:
return True
if not r1 or r1.val != r2.val:
return False
return self.issame(r1.left,r2.left) and self.issame(r1.right,r2.right)