0
点赞
收藏
分享

微信扫一扫

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

描述

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

比如:

源二叉树

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

镜像二叉树

每日一练(剑指offer)二叉树的镜像_递归_02

示例

输入:

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

返回值:

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

思路👇👇

具体做法:

1:两种方向的前序遍历,同步过程中的当前两个节点,同为空,属于对称的范畴。

2:当前两个节点只有一个为空或者节点值不相等,已经不是对称的二叉树了。

3:第一个节点的左子树与第二个节点的右子树同步递归对比,第一个节点的右子树与第二个节点的左子树同步递归比较。

/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;

}

}
*/
public class Solution {
boolean recursion(TreeNode root1,TreeNode root2){
//可以二个都为空
if(root1==null&&root2==null){
return true;
//只有一个为空或者节点值不同,必定不对称
}
if(root1==null||root2==null||root1.val!=root2.val){
return false;
//每层对应的节点进入递归比较
}
return recursion(root1.left,root2.right)&&recursion(root1.right,root2.left);
}
boolean isSymmetrical(TreeNode pRoot) {
return recursion(pRoot,pRoot);
}
}

举报

相关推荐

0 条评论