每天一道演算法題 樹的子結構

2021-08-11 18:12:00 字數 1027 閱讀 2790

題目描述

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

測試用例:

,對應輸出應該為:

false

分析:

判斷兩棵樹,如果彼此根節點不相同,則判斷tree1的左子樹和tree2是否相同,

再判斷右子樹和tree2是否相同,如果有一點沒有滿足就返回false

注意null的條件,hassubtree中,如果兩棵樹都不為空才進行判斷,

issubtree中,如果tree2為空,則說明第二棵樹遍歷完了,即匹配成功。所以要將tree2的判空放於tree1的判空前面。

tree1為空有兩種情況(1)如果tree1為空&&tree2不為空說明不匹配,

(2)如果tree1為空,tree2為空,說明匹配。

原始碼:

class treenode 

}public

class

test1 else

if (root1 == null) else

return root1.val == root2.val && issubtree(root1.left, root2.left) && issubtree(root1.right, root2.right);

}public

boolean

hassubtree(treenode root1, treenode root2) else

}}

執行測試:

總結:

此題的難點在於如果root2已經遍歷完了都能對應的(即root2為null時),返回true,注意此時root2判空的位置是在root1前面的。

每天一道演算法題

no.1 棧是特殊的線性表,它。a.對 b.錯答案 錯,它的插入和刪除都是在同一端進行的。no.2 n個葉子節點的滿二叉樹 除了葉子節點,每個節點都有兩個孩子 總共有多少個節點?a.2n 1 b.2n c.n 1 d.n答案 a 滿二叉樹我們講過了,度為0的節點比度為2的加點多乙個。滿二叉樹是特殊的...

每天一道演算法題

1.給定乙個只包括 的字串,判斷字串是否匹配。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。思路 正確思路 不需要考慮輸入內容是否合法,這只是做題,不是工程 定義乙個字典,後括號為鍵,前半部分為值 定義乙個元素儲存棧頂,注意這個設定,取棧...

每天一道演算法題

1 js計算某個字串出現的次數 j ascript計算乙個字串最多重複的字元及出現次數.var str zhaochucichuzuiduodezifu var o for var i 0,length str.length i length i else console.log o 輸出的是完整的...