题目描述:

操作给定的二叉树,将其变换为源二叉树的镜像。

二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5

解题思路:

  • 该题要求将一棵树变为其源二叉树的镜像,也就是将二叉树每一个节点的左子树变为其右子树
  • 说到交换我们最直接想到的就是使用temp临时变量来做到交换,所以我们首先用递归找到二叉树最右边的节点,然后将右节点值赋值给左节点,之后找到这个节点的左节点再赋值给右节点便好

解题代码:

  1. function Mirror(root)
  2. {
  3. // write code here
  4. if(!root) return null;
  5. let temp = root.left;
  6. root.left = Mirror(root.right);
  7. root.right = Mirror(temp);
  8. return root; // 注意这里一定要有返回值
  9. }