老卫带你学---剑指offer刷题系列(17.树的子结构)

17.树的子结构

问题:

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

解决:

思想:

我们只需要去寻找是否有一个a节点与b节点的值相等,然后再递归查看其左右节点是否相等即可

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 pRoot1==None or pRoot2==None:
            return False
        return self.istree(pRoot1,pRoot2) or self.HasSubtree(pRoot1.left,pRoot2) or self.HasSubtree(pRoot1.right,pRoot2)
        
    def istree(self,p1,p2):
        if p2==None:
            return True
        if(p1==None or p1.val!=p2.val):
            return False
        return self.istree(p1.left,p2.left) and self.istree(p1.right,p2.right)
发布了160 篇原创文章 · 获赞 30 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/yixieling4397/article/details/104911402