題目描述:
給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
思路:
使用遞迴;
兩棵樹都為空,返回true;
兩棵樹只有一顆為空,返回false;
兩棵樹都不空,比較他們對應左右子樹的值,相同返回true,不同返回false。
**:
/**
* definition for a binary tree node.
* struct treenode ;
*/#include
#include
#include
#define bool int
#define true 1
#define false 0
bool issametree
(struct treenode* p,
struct treenode* q)
遇到的問題:
錯誤部分:
if
(p->val==q->val)
報錯:
line 25
: char 13
: runtime error:member access within null pointer of type 'struct treenode'(solution.c)
錯誤原因是試圖使用空指標,沒有判斷當前指標是否指向了乙個有意義的位置。
我們只需要增加令其有意義的判斷條件即可,即指標是否為null
修改後的**
if
(p!=
null
&&q!=
null
&&p->val==q->val)
知識補充:
1.#define bool int
c語言中預設不支援"bool"資料型別,此處用巨集定義的方式來實現"bool"資料型別的功能使用,把bool換成int
2.遞迴
方法自己呼叫自己
遺留問題:
#include
LeetCode 100 相同的樹
題目描述 給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 輸入 1 1 2 3 2 3 1,2,3 1,2,3 輸出 true輸入 1 1 2 2 1,2 1,null,2 輸出 false輸入 1 1 2 1 1 2 1,2,...
LeetCode 100 相同的樹
給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 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...
leetcode100 相同的樹
給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。示例 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...