判斷樹的子結構

2021-10-03 07:37:46 字數 1495 閱讀 3721

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

思路:判斷b是不是a的子結構,就需要依次拿a的節點和b的根節點相比較,如果相同,則比較其左右節點是否相同,知道b二叉樹遍歷完。運用遞迴

#!/usr/bin/env 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

result=

false

if proot1 is

none

or proot2 is

none

:return result

#從根節點開始判斷,比較是否相同,不相同則繼續比較左子樹,右子樹

else

:return self.treeaoftreeb(proot1, proot2)

or self.hassubtree(proot1.left, proot2)

or self.hassubtree(

proot1.right, proot2)

deftreeaoftreeb

(self, proot1, proot2)

:#比較兩個二叉樹,直到b二叉樹為空,則說明節點相同,包含

if proot2 is

none

:return

true

if proot1 is

none

:return

false

if proot1.val != proot2.val:

return

false

return self.treeaoftreeb(proot1.left, proot2.left)

and self.treeaoftreeb(proot1.right, proot2.right)

a = treenode(1)

a1 = a.left = treenode(2)

a2 = a.right = treenode(3)

a1.left = treenode(4)

a1.right = treenode(5)

b = treenode(2)

b.left = treenode(4)

b.right = treenode(5)

s = solution(

)print

(s.hassubtree(a,b)

)

判斷樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 時間限制 1秒 空間限制 32768k 分析 a 和 b兩棵樹 1 根節點的value是否匹配 2 若匹配,進行a與b根節點的左子樹與右子樹的匹配 3 不匹配,判斷a的左子樹和右子樹的根結點是否和b的根...

判斷樹的子結構

輸入兩顆二叉樹,判斷b是不是a的子結構。約定空樹不是任意乙個數的子結構 b是a的子結構,即a中有出現和b中相同的結構及節點值。例如 求解思路 1.先遍歷樹a,在a中找到b的根節點。若b是a的字數,則b的根節點必然是a的節點之一 2.在a中找到b的根節點後,遞迴比較根節點及剩下的左右子樹是否都相等 補...

判斷樹的子結構

問題 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分析 1 子樹的兩種形式 1 子樹位於左孩子或右孩子枝,及b是a的左孩子或右孩子。2 兩棵樹擁有相同的根節點,子樹更短。2 判斷過程 1 父親樹依次尋找與子樹根節點相同的節點,將找到的節點作為子樹b2的根節...