TypeScript实现二叉树镜像:递归交换左右子节点详解

作者:函数茶馆时间:2026-10-25 21:01:27浏览:153

本文介绍如何使用TypeScript获取二叉树的镜像。核心思路是先序遍历树节点,若存在子节点则交换其左右位置。通过递归方式处理非叶节点,最终实现整棵树的镜像翻转。文章包含完整代码示例及测试用例,帮助开发者快速掌握该算法实现。

前言

本文旨在探讨如何求解二叉树的镜像问题,并分享具体的解决思路与代码实现,欢迎感兴趣的开发者阅读。

思路分析

参考照镜子的原理,镜像内容与原内容左右相反。我们可以利用这一特性来推导二叉树镜像的生成方式,具体效果如下所示:

  • 镜像前后的二叉树,其根节点保持一致。
  • 对比镜像前后的树结构,主要区别在于左右子节点的位置发生了互换。

前言

基于上述观察,生成二叉树镜像的具体流程为:采用先序遍历访问树的每一个节点。若当前节点包含子节点,则交换其左、右子节点的位置。当所有非叶子节点的左右子节点均完成交换后,即得到该树的镜像。

若对树的遍历算法尚不熟悉,可参考我的另一篇文章:先序遍历。

实现代码

明确上述逻辑后,即可编写相应的TypeScript代码,具体实现如下:

export function MirrorImageOfTree(node: BinaryTreeNode | null): void {
  if (node == null) return;
  if (node.left == null && node.right == null) return;
  // 交换左右子节点
  const temp = node.left;
  node.left = node.right;
  node.right = temp;
  if (node.left) {
    MirrorImageOfTree(node.left);
  }
  if (node.right) {
    MirrorImageOfTree(node.right);
  }
}

完整代码请移步:MirrorImageOfTree.ts

将文章开头的示例代入上述代码进行测试,结果如下所示:

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);

前言

完整代码请移步:mirrorImage-test.ts

以上就是TypeScript获取二叉树镜像实例的详细内容,更多关于TypeScript获取二叉树镜像的资料请关注本站其它相关文章!

作者最新文章
相关文章
更多