牛客網12 樹的子結構

2021-08-20 22:28:43 字數 1135 閱讀 6215

題目描述

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

#下面兩個函式,hassubtree是判斷兩棵樹是否有空樹,如果有空樹,則沒有必要比了

#第二個函式is_subtree,是判斷a,b是否是子樹了,根節點相同

class

solution:

defhassubtree

(self, proot1, proot2):

# write code here

ifnot proot1 or

not proot2:

#當tree1和tree2都不為零的時候,才進行比較。否則直接返回false

return

false

return self.is_subtree(proot1, proot2) or self.hassubtree(proot1.left, proot2) or self.hassubtree(proot1.right, proot2)

#第一項是判斷此時是否可以作為起點判斷,第二項和第三項是判斷左右子樹是不是可以進行判斷

defis_subtree

(self, a, b):

ifnot b:

#如何b為空,則b已經對比完了,而前面都是相等的,因此全部判斷完返回true

return

true

ifnot a or a.val != b.val:

#如果a為空,則找遍了a也沒有找到相等的起點,如果a與b的值不同

return

false

return self.is_subtree(a.left,b.left) and self.is_subtree(a.right, b.right)

#第一項和第二項是判斷左子樹和右子樹是不是相等,就這樣從ab的起點,一步一步判斷

牛客網刷題 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解析 可以想見整個過程 1 a,b首先看根節點對不對,如果對了,看根節點的左右結點對不對。2 若第乙個根節點沒有配對成功,則換成a的左子結點來配對。3 若左子結點沒有成功,則換成a的右子結點來配對。st...

牛客 樹的子結構

題目要求 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解決此題需要分為兩步 1.在a樹中找到與b樹的根節點的值相等的結點r。2.再判斷b樹是否與a樹中以r為根的子樹具有相同的結構。第一步 1.遞迴遍歷樹a,在樹a中找與b樹的根節點的值相等的結點r。2.若找...

劍指offer(牛客網)樹的子結構

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 public class solution 判斷根開頭的 if ispart root1,root2 return hassubtree root1.left,root2 hassubtree root1.rig...