新聞中心
小編給大家分享一下LeetCode如何解決相同的樹問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為宿城等服務(wù)建站,宿城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為宿城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1. 題目
100. 相同的樹[1]
2. 描述
給定兩個二叉樹,編寫一個函數(shù)來檢驗它們是否相同。
如果兩個樹在結(jié)構(gòu)上相同,并且節(jié)點具有相同的值,則認(rèn)為它們是相同的。
示例 1:
![]()
示例 2:
![]()
示例 3:
![]()
3. 思路
利用二叉樹刷題遞歸遍歷框架,先對根節(jié)點進(jìn)行操作,然后再遞歸左右子節(jié)點即可。
當(dāng)兩棵樹的當(dāng)前節(jié)點都為 null 時返回 true
當(dāng)其中一個為 null 另一個不為 null 時返回 false
當(dāng)兩個都不為空但是值不相等時,返回 false
以上三步完成對根節(jié)點的操作,接下來對左右子節(jié)點進(jìn)行遞歸即可
// 遞歸訪問
void traverse(TreeNode root){
// 前序遍歷,先操作根節(jié)點
traverse(root.left);
// 中序遍歷,操作左子節(jié)點
traverse(root.right);
// 后序遍歷,操作右子節(jié)點
}
4. 實現(xiàn)
public boolean isSameTree(TreeNodeTest p, TreeNodeTest q) {
/*
* 先進(jìn)行根節(jié)點的判斷
*/
// 兩者均為 null,說明相等
if (p == null && q == null) {
return true;
}
// 其中一個為 null,說明不相等
if (p == null || q == null) {
return false;
}
// 兩者均非 null,但值不同,說明不相等
if (p.val != q.val) {
return false;
}
// 根節(jié)點判斷之后,在判斷左右節(jié)點
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
以上是“LeetCode如何解決相同的樹問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享標(biāo)題:LeetCode如何解決相同的樹問題
網(wǎng)站路徑:http://www.ef60e0e.cn/article/gechps.html