树的子结构(important!)
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的子结构(important!)相关的知识,希望对你有一定的参考价值。
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
python solution:
# -*- 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 pRoot1 is None or pRoot2 is None:
return False
res = False
if pRoot1.val==pRoot2.val:
res = self.doeshtree1havetree2(pRoot1,pRoot2)
if res is False:
res = self.HasSubtree(pRoot1.left,pRoot2)
if res is False:
res = self.HasSubtree(pRoot1.right,pRoot2)
return res
def doeshtree1havetree2(self,proot1,proot2): #判断以proot1和proot2为根节点的两个树是否相同
if proot2 is None:
return True
if proot1 is None:
return False
if proot1.val!=proot2.val:
return False
return self.doeshtree1havetree2(proot1.left,proot2.left) and self.doeshtree1havetree2(proot1.right,proot2.right)
以上是关于树的子结构(important!)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段