最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript獲取二叉樹的鏡像實(shí)例

 更新時(shí)間:2022年09月26日 11:12:20   作者:神奇的程序員  
這篇文章主要為大家介紹了TypeScript獲取二叉樹的鏡像實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

給定一顆二叉樹,如何獲取它的鏡像?本文將跟大家分享這個(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)文章

最新評(píng)論

石屏县| 防城港市| 通城县| 驻马店市| 卢氏县| 大竹县| 万安县| 磐石市| 务川| 犍为县| 务川| 林甸县| 通道| 延安市| 阳西县| 阿城市| 大宁县| 安陆市| 久治县| 贞丰县| 绵竹市| 灵璧县| 石狮市| 天门市| 扬州市| 西和县| 牟定县| 文登市| 法库县| 太保市| 新疆| 长寿区| 佳木斯市| 凌源市| 长阳| 永修县| 柳林县| 双城市| 灵宝市| 安徽省| 安阳县|