給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
從遞迴的角度來思考,兩棵樹相等需要滿足,則需要滿足當前根節點的值,還要同時兩個左子樹對應相等,兩個右子樹對應相等。
class
solution
};
對兩棵樹進行模擬非遞迴的前序遍歷。只是和普通的前序遍歷不同,對於普通的前序遍歷不應該把左右空節點入棧,但是對於該題,是左右的空節點也要入棧,即把每一棵樹當做乙個完全二叉樹。
class
solutionif(
!peek1 ||
!peek2)
return
false
;int v1 = peek1-
>val;
int v2 = peek2-
>val;
if(v1!=v2)
return
false
; s1.
push
(peek1-
>left)
; s1.
push
(peek1-
>right)
;
s2.push
(peek2-
>left)
; s2.
push
(peek2-
>right);}
return
true;}
};
只用乙個棧的實現:
bool
issametree
(treenode* p, treenode* q)if(
!peek1 ||
!peek2)
return
false
;int v1 = peek1-
>val;
int v2 = peek2-
>val;
if(v1!=v2)
return
false
;
s1.push
(peek1-
>left)
; s1.
push
(peek2-
>left)
; s1.
push
(peek1-
>right)
;
s1.push
(peek2-
>right);}
return
true
;}
其實也是要先寫乙個輔助的函式,用於判斷兩棵樹是否相等,只是和上面相比的同樹判斷不同的是,只要a樹不為空,b樹為空,也是可以返回為真。
class
solution
bool
issubstructure
(treenode* a, treenode* b)
};
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...