剑指offer-树的子结构-python

剑指offer-树的子结构-python

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

思路

空树不是任意一个树的子结构,如果 root1 与root2 中有一个为空树的话,返回False

判断是否存在子树:

当rootA的值与rootB一致时,B是A的子结构(且A的左子树等于B左子树,A的右子树等于B右子树)

当A的左子树等于B,B是A的子结构

当A的右子树等于B,B是A的子结构

循环递归

# -*- 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):

if not pRoot1 or not pRoot2:

return False

return self.isrubtreeequl(pRoot1,pRoot2) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)

def isrubtreeequl(self,root1,root2):

if not root2:

return True

if not root1:

return False

return root1.val == root2.val and self.isrubtreeequl(root1.left,root2.left) and self.isrubtreeequl(root1.right,root2.right)

相关文章

一直很好奇,李白的剑术到底怎么样?
365bet指定开户网址

一直很好奇,李白的剑术到底怎么样?

📅 11-04 👁️ 1269
虾淘淘靠谱吗
365在线体育投注

虾淘淘靠谱吗

📅 07-25 👁️ 2923
实测抽奖妲己热情桑巴,花了3120点券,这个价格是否是你的预期