摘要:參考自對(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 / 6 6 / / 5 7 7 5
非對(duì)稱二叉樹(shù):
8 / 6 5 / / 5 7 7 5
實(shí)現(xiàn)思路:
判斷根節(jié)點(diǎn)相同
左子樹(shù)的右節(jié)點(diǎn)和右子樹(shù)的左節(jié)點(diǎn)相同
右子樹(shù)的左節(jié)點(diǎn)和左子樹(shù)的右節(jié)點(diǎn)相同
步驟1: 模擬一個(gè)對(duì)稱二叉樹(shù)和非對(duì)稱二叉樹(shù)
//對(duì)稱二叉樹(shù) const symmetricalTree = { val: 8, left: { val: 6, left: { val: 5, left: null, right: null }, right: { val: 7, left: null, right: null } }, right: { val: 6, left: { val: 7, left: null, right: null }, right: { val: 5, left: null, right: null } } }
//非對(duì)稱二叉樹(shù) const binaryTree = { val: 8, left: { val: 6, left: { val: 5, left: null, right: null }, right: { val: 7, left: null, right: null } }, right: { val: 9, left: { val: 7, left: null, right: null }, right: { val: 5, left: null, right: null } } }
步驟2: 利用遞歸實(shí)現(xiàn)對(duì)稱二叉樹(shù)判斷
function isSymmetrical(pRoot) { return isSymmetricalTree(pRoot, pRoot); } function isSymmetricalTree(node1, node2) { //判斷兩個(gè)節(jié)點(diǎn)都是否為空 if (!node1 && !node2) { return true; } //判斷兩個(gè)節(jié)點(diǎn)是否存在一個(gè)為空 if (!node1 || !node2) { return false; } //判斷兩個(gè)節(jié)點(diǎn)是否相同 if (node1.val != node2.val) { return false; } return isSymmetricalTree(node1.left, node2.right) && isSymmetricalTree(node1.right, node2.left); }
輸出:
console.log(isSymmetrical(symmetricalTree)); console.log(isSymmetrical(binaryTree));
結(jié)果如下:
true false
參考自ConardLi: 《對(duì)稱的二叉樹(shù)》 公眾號(hào): code秘密花園
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104980.html
摘要:另外,由于篇幅有限,本篇的重點(diǎn)在于二叉樹(shù)的常見(jiàn)算法以及實(shí)現(xiàn)。常見(jiàn)的二叉樹(shù)實(shí)現(xiàn)代碼之前寫(xiě)過(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)代碼 之前寫(xiě)過(guò)相關(guān)的文章,是關(guān)于如...
摘要:題目描述請(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)然了,本...
閱讀 1772·2021-10-09 09:44
閱讀 3342·2021-09-27 13:36
閱讀 1596·2021-09-22 15:33
閱讀 1334·2021-09-22 15:23
閱讀 1245·2021-09-06 15:02
閱讀 1766·2019-08-29 16:14
閱讀 2983·2019-08-29 15:26
閱讀 2472·2019-08-28 18:08