【剑指Offer】树的子结构 解题报告(Python)

【剑指Offer】树的子结构 解题报告(Python)

标签(空格分隔): LeetCode


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

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

Ways

需要两个函数,一个用来判断是不是子结构,另外一个是用来进行初始化。

判断是否是子结构的时候,如果当前值相等,需要进行左右值是否相等的判断;如果当前值不等,则判断Root1的左右子树是否包含Root2.

# -*- 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.isSubtree(pRoot1, pRoot2)

    def isSubtree(self, p1, p2):
        if p2 == None:
            return True
        if p1 == None:
            return p1 == p2
        res = False
        if p1.val == p2.val:
            res = self.isSubtree(p1.left, p2.left) and self.isSubtree(p1.right, p2.right)
        return res or self.isSubtree(p1.left, p2) or self.isSubtree(p1.right, p2)

Date

2018 年 3 月 11 日

posted @ 2018-03-11 16:42  负雪明烛  阅读(28)  评论(0)    收藏  举报