摘要:題目描述請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),用來(lái)判斷一顆二叉樹(shù)是不是對(duì)稱的。注意,如果一個(gè)二叉樹(shù)同此二叉樹(shù)的鏡像是同樣的,定義其為對(duì)稱的。分析一般關(guān)于二叉樹(shù)的題目,第一直覺(jué)是往遞歸上面靠,當(dāng)然了,本題適不適合還暫時(shí)不知道。
題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),用來(lái)判斷一顆二叉樹(shù)是不是對(duì)稱的。注意,如果一個(gè)二叉樹(shù)同此二叉樹(shù)的鏡像是同樣的,定義其為對(duì)稱的。
分析一般關(guān)于二叉樹(shù)的題目,第一直覺(jué)是往遞歸上面靠,當(dāng)然了,本題適不適合還暫時(shí)不知道。
所謂鏡像二叉樹(shù),舉個(gè)例子
1 1 / / 2 3 ---鏡像---> 3 2 / / / 4 5 6 6 5 4
如上圖,這個(gè)二叉樹(shù)就不是對(duì)稱的。
1 1 / / 2 2 ---鏡像---> 2 2 / / 4 4 4 4
可以看出來(lái),對(duì)于一個(gè)節(jié)點(diǎn)p來(lái)說(shuō)
如果它的left為空且right為空,則p的左右子樹(shù)對(duì)稱;
如果left不為空且right不為空,
如果left的值不等于right的值,p的左右子樹(shù)不對(duì)稱
否則遞歸檢查left.left和right.right、left.right和right.left,為什么是這兩對(duì)節(jié)點(diǎn)呢?因?yàn)樽麋R像操作之后,剛好right.right會(huì)落到left.left的位置,right.left會(huì)落到left.right的位置,所以只要left.left和right.right、left.right和right.left對(duì)稱即可,后面的可以遞歸的檢查下去。
function TreeNode(x) { this.val = x; this.left = null; this.right = null; } function isSymmetrical(root) { if (root === null) return true; return check(root.left, root.right); } function check(l, r){ if(l === null && r === null){ return true; } else if(l !== null && r !== null){ if(l.val !== r.val) return false; else return check(l.left, r.right)&&check(l.right, r.left); } else{ return false; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95671.html
摘要:另外,由于篇幅有限,本篇的重點(diǎn)在于二叉樹(shù)的常見(jiàn)算法以及實(shí)現(xiàn)。常見(jiàn)的二叉樹(shù)實(shí)現(xiàn)代碼之前寫過(guò)相關(guān)的文章,是關(guān)于如何創(chuàng)建及遍歷二叉樹(shù)的,這里不再贅述。同時(shí)我們注意到,在二叉樹(shù)深度比較大的時(shí)候,我們光是比較左右是不夠的。 本篇為復(fù)習(xí)過(guò)程中遇到過(guò)的總結(jié),同時(shí)也給準(zhǔn)備面試的同學(xué)一份參考。另外,由于篇幅有限,本篇的重點(diǎn)在于二叉樹(shù)的常見(jiàn)算法以及實(shí)現(xiàn)。 常見(jiàn)的二叉樹(shù)實(shí)現(xiàn)代碼 之前寫過(guò)相關(guān)的文章,是關(guān)于如...
摘要:題目描述操作給定的二叉樹(shù),將其變翻轉(zhuǎn)為源二叉樹(shù)的鏡像。輸入描述解題思路遞歸版本首先,對(duì)數(shù)據(jù)結(jié)構(gòu)比較了解的話會(huì)想到用遞歸來(lái)解決。所謂遞歸,在計(jì)算機(jī)科學(xué)中是指一種通過(guò)重復(fù)將問(wèn)題分解為同類的子問(wèn)題而解決問(wèn)題的方法來(lái)自維基百科。 題目描述 操作給定的二叉樹(shù),將其變翻轉(zhuǎn)為源二叉樹(shù)的鏡像。 輸入描述: 1 1 / ...
摘要:給定一個(gè)二叉樹(shù)找到該樹(shù)中兩個(gè)指定節(jié)點(diǎn)的最近公共祖先。示例輸入輸出解釋節(jié)點(diǎn)和節(jié)點(diǎn)的最近公共祖先是節(jié)點(diǎn)。說(shuō)明所有節(jié)點(diǎn)的值都是唯一的。 給定一個(gè)二叉樹(shù), 找到該樹(shù)中兩個(gè)指定節(jié)點(diǎn)的最近公共祖先。 示例 1: 輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 輸出: 3 解釋: 節(jié)點(diǎn) 5 和節(jié)點(diǎn) 1 的最近公共祖先是節(jié)點(diǎn) 3。 示例 ...
摘要:參考自對(duì)稱的二叉樹(shù)公眾號(hào)秘密花園對(duì)稱二叉樹(shù)非對(duì)稱二叉樹(shù)實(shí)現(xiàn)思路判斷根節(jié)點(diǎn)相同左子樹(shù)的右節(jié)點(diǎn)和右子樹(shù)的左節(jié)點(diǎn)相同右子樹(shù)的左節(jié)點(diǎn)和左子樹(shù)的右節(jié)點(diǎn)相同步驟模擬一個(gè)對(duì)稱二叉樹(shù)和非對(duì)稱二叉樹(shù)對(duì)稱二叉樹(shù)非對(duì)稱二叉樹(shù)步驟利用遞歸實(shí)現(xiàn)對(duì)稱二叉樹(shù)判斷判斷兩個(gè) 參考自ConardLi: 《對(duì)稱的二叉樹(shù)》 公眾號(hào): code秘密花園 對(duì)稱二叉樹(shù): 8 / ...
閱讀 1642·2019-08-30 15:44
閱讀 2566·2019-08-30 11:19
閱讀 394·2019-08-30 11:06
閱讀 1557·2019-08-29 15:27
閱讀 3077·2019-08-29 13:44
閱讀 1621·2019-08-28 18:28
閱讀 2353·2019-08-28 18:17
閱讀 1978·2019-08-26 10:41