劍指offer 面試題26 樹的子結構

2021-08-04 03:09:48 字數 1382 閱讀 2457

完整**位址

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。

(ps:我們約定空樹不是任意乙個樹的子結構)

找到樹a中與樹b根節點值相同的節點,設樹a中該節點為subroot

在遍歷樹b的同時,遍歷subroot,如果遍歷完樹b發現subroot中沒有與b不一致的地方,則b是a的子結構

遍歷樹b時,發現subroot中有與樹b結構不一致的地方,則退出遍歷

重複步驟1,找到樹a中與樹b根節點下乙個值相同的節點

我覺得我這題的**寫的挺妙的哈哈哈

public

static

class

treenode

}public

boolean

hassubtree(treenode root1, treenode root2)

/** * 遍歷root1,當找到某個節點值與value相同時,遍歷root2和子樹root做比較

*/public

boolean

findrootwithvalue(treenode root, int value, treenode root2)

return findrootwithvalue(root.left, value, root2) ||

findrootwithvalue(root.right, value, root2);

}public

boolean

compare(treenode root, treenode roottobecompared)

public

static

void

main(string args)

/** * 功能測試

* 1

* / \

* 2 3

* /\ /\

* 4 5 6 7

*/private

static

void

test1()

/** * 邊界測試

* 1.root2只有乙個節點

*/private

static

void

test2()

/** * 極端測試

* 1.root1為 null

* 2.root2為 null

* 3.root1和root2都為null

*/private

static

void

test3()

/** * 第一次沒通過的case

*/private

static

void

test4()

劍指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的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 數還有子樹,那肯定是用遞迴寫比較方便了。題目要做的是從a 中找b 所以需要遍歷一遍a樹並且尋找a中與b的頭節點相等的那個節點,找到這個節點後就遍歷a樹和b樹,看是否相等。第二個方法的遞迴結束條件分...

劍指offer面試題26

面試題26 複雜鍊錶的複製 題目 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複製鍊錶中,每個結點除了有乙個m pnext指標指向下乙個結點外,還有乙個m psibling指向鍊錶中任意結點或者null。結點的c 定義如下 s...