給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
示例 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 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不可...