TypeScript獲取二叉樹的鏡像實(shí)例
前言
給定一顆二叉樹,如何獲取它的鏡像?本文將跟大家分享這個(gè)問題的解決方案,歡迎各位感興趣的開發(fā)者閱讀本文。
思路分析
當(dāng)我們把一張寫有文字的紙放在鏡子前面,你看到的內(nèi)容正好與你寫的內(nèi)容是相反的。那么我們就可以依據(jù)照鏡子的經(jīng)驗(yàn)畫出它的鏡像了,如下所示:
- 鏡像前后的兩棵樹根節(jié)點(diǎn)相同
- 鏡像后的樹與鏡像前相比:它們的左、右子節(jié)點(diǎn)交換了位置

通過觀察后,我們就得出了一顆樹的鏡像過程:先序遍歷這棵樹的每個(gè)節(jié)點(diǎn),如果遍歷到的節(jié)點(diǎn)有子節(jié)點(diǎn),就交換它的兩個(gè)子節(jié)點(diǎn)。當(dāng)交換完所有非葉節(jié)點(diǎn)的左、右子節(jié)點(diǎn)之后,就得到了樹的鏡像。
對(duì)樹的遍歷不了解的開發(fā)者,請(qǐng)移步我的另一篇文章:先序遍歷
實(shí)現(xiàn)代碼
想清楚思路后,我們就可以很順利的寫出代碼了,如下所示:
export function MirrorImageOfTree(node: BinaryTreeNode | null): void {
if (node == null) return;
if (node.left == null && node.right == null) return;
// 交換左右子節(jié)點(diǎn)
const temp = node.left;
node.left = node.right;
node.right = temp;
if (node.left) {
MirrorImageOfTree(node.left);
}
if (node.right) {
MirrorImageOfTree(node.right);
}
}
完整代碼請(qǐng)移步:MirrorImageOfTree.ts
我們將文章開頭所講的例子代入上述代碼來測(cè)試下,如下所示:
const tree: BinaryTreeNode = {
key: 8,
left: {
key: 5,
left: { key: 3 },
right: { key: 7 }
},
right: { key: 18, left: { key: 13 }, right: { key: 22 } }
};
MirrorImageOfTree(null);
console.log("鏡像后的樹", tree);

完整代碼請(qǐng)移步:mirrorImage-test.ts
以上就是TypeScript獲取二叉樹的鏡像實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于TypeScript獲取二叉樹鏡像的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS輕量級(jí)函數(shù)式編程實(shí)現(xiàn)XDM一
這篇文章主要為大家介紹了JS輕量級(jí)函數(shù)式編程實(shí)現(xiàn)XDM示例詳解第1/3篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
前端可視化搭建定義聯(lián)動(dòng)協(xié)議實(shí)現(xiàn)
這篇文章主要為大家介紹了前端可視化搭建定義聯(lián)動(dòng)協(xié)議實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
9種使用Chrome Firefox 自帶調(diào)試工具調(diào)試javascript技巧
這篇文章主要介紹了9種使用Chrome Firefox 自帶網(wǎng)頁調(diào)試工具調(diào)試javascript技巧2017-12-12
詳解如何用js實(shí)現(xiàn)一個(gè)網(wǎng)頁版節(jié)拍器
這篇文章主要為大家介紹了詳解如何用js實(shí)現(xiàn)一個(gè)網(wǎng)頁版節(jié)拍器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
JavaScript架構(gòu)搭建前端監(jiān)控如何采集異常數(shù)據(jù)
這篇文章主要為大家介紹了JavaScript架構(gòu)搭建前端監(jiān)控如何采集異常數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
JavaScript?設(shè)計(jì)模式之洋蔥模型原理及實(shí)踐應(yīng)用
這篇文章主要介紹了JavaScript?設(shè)計(jì)模式之洋蔥模型原理及實(shí)踐應(yīng)用,主要針對(duì)項(xiàng)目中遇到的問題,引申到koa-compose原理解析。通過學(xué)習(xí)洋蔥模式來解決我們實(shí)際項(xiàng)目中的問題2022-09-09
微信小程序request請(qǐng)求后臺(tái)接口php的實(shí)例詳解
這篇文章主要介紹了微信小程序request請(qǐng)求后臺(tái)接口php的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
在JavaScript實(shí)例對(duì)象中改寫原型方法詳情
這篇文章主要介紹了在JavaScript實(shí)例對(duì)象中改寫原型方法的一下相關(guān)資料,需要的效果版可以參考一下文章詳細(xì)內(nèi)容,希望對(duì)你有所幫助2021-10-10

