JZ17 樹的子結構

2022-09-19 04:15:12 字數 758 閱讀 6468

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

輸入:,

返回值:true

從 a樹(root1為根)開始和 b樹(root2為根)進行匹配,root1 和 root2 的 val 相等,那麼進一步深入判斷他倆左右子樹是否相等;如果左右不等,分別將 a 樹的左右孩子和 b 樹比較,直到有一方為空說明 b 樹不是 a 樹的子樹。

在 root1 和 root2 相等時,說明 a 樹的子樹可能是 b 樹的父親樹。那此時,一定要同時判斷 root1 和 root2 引導的子樹的左右結點是否相等,通過遞迴的方法,檢測 [ root1.left 和 root2.left ] 和 [ root1.right 和 root2.right ],他們都相等時,才能說明子結點相同,還要進一步判斷子孩子的子孩子,直到 root2 為空說明 b 樹是 a 樹的子樹,否則 b 樹不是 a 樹的子樹 。

public

class

solution

return

hassubtree

(root1.left, root2)

||hassubtree

(root1.right, root2);}

//判斷是否是子結構

public

boolean

judge

(treenode root1,treenode root2)

}

JZ17 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 題解 1 我們規定,空樹不是任何乙個樹的子結構,所以當 root1 或 root2 有乙個為空時,就可以直接返回 false 2 如果當前 root1.val root2.val,那就可以去判斷它的左子...

JZ17 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 eg 輸入,輸出 以上二叉樹會被序列化為 1 root節點1,是第一層 2,3 然後第二層是2,3 4,第三層分別是2節點的兩個孩子節點空,用 來表示,然後3節點的左孩子為4,右孩子節點為 5 第四層4...

JZ17 樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解 對樹進行從根開始遞迴遍歷,依次遍歷左子樹,右子樹。如果根開始遍歷存在該子樹,則返回true 否則遍歷左子樹和右子樹,如果左子樹與該子樹相等,則返回true 否則遍歷右子樹,如果右子樹與該子樹相等,則...