动画:面试必刷之二叉树的镜像
2021-01-21 22:27
861 查看
题目
请完成一个函数,输入一棵二叉树,请函数输出它的镜像。
如下所示:
问题分析
根据题目的要求,求出一个二叉树的镜像。首先我们要知道什么是二叉树的镜像,我们通过上图可以得出,镜像就是二叉树的每层节点的左右子树进行相互交换。说白了就是除了根节点外,所有的结点中的左子节点的镜像是右子节点,右子节点的镜像变成了左子节点。
基本的问题我们弄明白了,下一步我们屡屡思路,开始动手实现二叉树的镜像。
因为每个具有非空节点的节点的左右子节点都要进行交换,所以我们可以用递归来解决。具体思路分析,我们看下方的解决思路。
动画实现
解决思路
首先,我们使用递归要找到递归的终止条件,不能一直往下递归呀,当我们遇到叶子节点的时候,我们就不用进行递归交换了。所以递归条件就是当前递归的节点是否为空。
1 if(root == null){ 2 return; 3 }
然后我们声明一个临时变量用来存储两个节点交换的值,然后进行左右子树交换。
1// 进行结点交换 2 Let tempNode = root.left; 3 root.left = root.right; 4 root.right = tempNode;
交换之后,我们直接递归剩下的节点进行交换就 OK。然后返回递归后的树的根节点。
1// 递归遍历剩余的子节点 2 insert(root.left); 3 insert(root.right); 4 5 // 返回根节点 6 return root;
代码实现
JavaScript
Java
Python
测试用例
- 普通二叉树 —— 普通测试
- 只有左子节点、只有右子节点、只有一个结点 —— 特殊测试
- 空树 —— 输入测试
相关文章推荐
- 剑指offer:(19)面试官谈面试思路:二叉树的镜像
- 面试算法:镜像二叉树的检测
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 面试100题:15.求二叉树的镜像
- 动画:面试必刷之对称的二叉树
- 【笔试面试——36】二叉树03——二叉树的镜像
- 二叉树的镜像 【微软面试100题 第十五题】
- 【从零单排之微软面试100题系列】15之二叉树的镜像
- 笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)
- 笔试面试之二叉树的镜像
- 剑指offer-4-面试19:二叉树的镜像
- 面试100题:15.求二叉树的镜像
- 面试思路:二叉树的镜像
- 面试经典(14)--二叉树镜像
- 剑指offer 19题 【面试思路】二叉树的镜像
- 二叉树的镜像 【微软面试100题 第十五题】
- 《剑指offer》刷题笔记(面试思路):二叉树的镜像
- 二叉树的镜像
- 微软面试100道之11 求二叉树中节点的最大距离