劍指 Offer 26 樹的子結構

2022-09-19 09:27:13 字數 840 閱讀 1616

劍指 offer 26. 樹的子結構

這題實在是坑太多了,稍不留心就掉進坑了。

也是足足wa了3次並且參考了題解發現自己的思路一些小問題才最後能夠ac。

這裡要非常注意到題目給出的乙個資訊:(約定空樹不是任意乙個樹的子結構),再分析出現空樹的情形。

①:a為空樹b不為空樹,此時b顯然不可能是空樹的乙個子結構,返回false;

②:a不為空樹b為空樹,此時根據題意,b不能是任意乙個樹的子結構,所以也返回false;

③:a,b都為空樹,此時空樹也不能是空樹的子結構,所以也返回false;

分析完空樹的情形,再分析一般情況,我們需要遍歷a樹中的每乙個節點,並以正在遍歷的節點為新根,判斷此時新樹是否能夠包含b,若包含,則說明是子結構。

那麼再分析判斷是否包含的輔助函式如何編寫。還是需要先敲定根節點是否為空,如果b節點為空,那麼顯然能夠被a所包含,否則a為空就不能包含b。

其他情形則判斷根節點值是否相同,若相同,再判斷左右子樹是否能夠包含。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

// 以a為根節點的樹是否包含有以b為根節點的樹

private boolean contains(treenode a, treenode b)

return false;}}

劍指offer26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3,...

劍指 Offer 26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3,...

劍指 Offer 26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。definition for a bin...