每日一练(剑指offer)二叉数的镜像

时间:2021-09-19 00:59:24

描述

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


比如:

源二叉树

每日一练(剑指offer)二叉数的镜像

镜像二叉树

每日一练(剑指offer)二叉数的镜像

示例

输入:

{8,6,10,5,7,9,11}

返回值:

{8,10,6,11,9,7,5}

思路????????

因为我们需要将二叉树镜像,意味着每个左右子树都会交换位置,如果我们从上到下对遍历到节点交换位置,但是它们后面的节点无法跟着他们一起被交换,因此我们可以考虑自低向上对每二个相对位置的节点交换位置,这样往上各个子树也会被交换位置

自低向上上网遍历方式,我们可以采用后序递归的方法

具体做法:

1.先深度最左端的节点,遇到空树返回,处理最左端的二个子节点交换位置。

2.然后进入右子树,继续按照先左后右再回中的方式访问。

3.再返回到父问题,交换父问题二个子节点的值

import java.util.*;

/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return TreeNode类
*/
public TreeNode Mirror (TreeNode pRoot) {
// write code here
//空数返回
if(pRoot==null){
return null;
}
//先递归子树
TreeNode left=Mirror(pRoot.left);
TreeNode right=Mirror(pRoot.right);
//交换
pRoot.left=right;
pRoot.right=left;
return pRoot;
}
}