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获取二叉树镜像的资料请关注本站其它相关文章!
作者最新文章
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09








