每日一道演算法題 相同的樹

2021-09-25 12:34:53 字數 961 閱讀 7046

給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。

如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。

示例 1:

輸入: 1 1

/ \ /

2 3 2 3

[1,2,3],   [1,2,3]
輸出: true

示例 2:

輸入: 1 1

/ 2 2

[1,2],     [1,null,2]
輸出: false

示例 3:

輸入: 1 1

/ \ /

2 1 1 2

[1,2,1],   [1,1,2]
輸出: false

/**

* definition for a binary tree node.

* struct treenode ;

*/bool issametree(struct treenode* p, struct treenode* q)

最簡單的策略是使用遞迴。首先判斷 p 和 q 是不是 none,然後判斷它們的值是否相等。 若以上判斷通過,則遞迴對子結點做同樣操作。

return issametree(p->left, q->left) ? issametree(p->right, q->right) : false;

首先判斷:

issametree(p->left, q->left) 的真假,若為真,返回issametree(p->right, q->right) 的值,這裡還需要判斷 issametree(p->right, q->right)的真假,若為真則返回true,若為假,則返回false;

若一開始,issametree(p->left, q->left)為假,則直接返回false。

每日一道演算法題

no.1 設指標變數fron t表示鏈式佇列的隊頭指標,指標變數rear表示鏈式佇列的隊尾指標,指標變數s指向將要入佇列的結點x,則入佇列的操作序列為 a.front next s front s b.s next rear rear s crear next s rear s d.s next f...

每日一道演算法題

no.1 若有 18 個元素的有序表存放在一維陣列 a 19 中,第乙個元素放 a 1 中,現進行二分查詢,則查詢 a 3 的比較序列的下標依次為 a.1,2,3 b.9,5,2,3 c.9,5,3 d.9,4,2,3 答案 d.第一次查詢,隊首為下標1,隊尾下標18,所以是 1 18 2 9 第二...

每日一道演算法題 TwoSum

167.給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不可...