題目描述:
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
題解:
(1)我們規定,空樹不是任何乙個樹的子結構,所以當 root1 或 root2 有乙個為空時,就可以直接返回 false 。
(2)如果當前 root1.val == root2.val,那就可以去判斷它的左子樹和右子樹是否相等,如果其左右子樹都相等,那就繼續判斷左右子樹的左右子樹。依次類推,直至遍歷結束。
(3)如果當前 root1.val 不等於 root2.val,那就看 root1.left.val 或者 root1.right.val 等不等於 root2.val,如果相等,那回到步驟2。直至 a樹 遍歷結束都沒找到相等的結點,則說明 b樹 不是 a樹 的子結構。
public
static
boolean
issametree
(treenode root1,treenode root2)
// a樹 遍歷結束,說明在 a樹 中沒找到 b樹
if(root1 == null)
return root1.val == root2.val
&& issametree (root1.left,root2.left)
&& issametree (root1.right,root2.right);}
public
static
boolean
hassubtree
(treenode root1,treenode root2)
// 當前結點相等,判斷其左右子樹是否相等
if(root1.val == root2.val)
}// root1 不等於 root2,就去看他的左右結點是否相等
return hassubtree (root1.left,root2)
|| hassubtree (root1.right,root2)
;}
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 否則遍歷右子樹,如果右子樹與該子樹相等,則...
JZ17 樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 輸入 返回值 true 從 a樹 root1為根 開始和 b樹 root2為根 進行匹配,root1 和 root2 的 val 相等,那麼進一步深入判斷他倆左右子樹是否相等 如果左右不等,分別將 a 樹的左右孩...