描述
操作给定的二叉树,将其变换为源二叉树的镜像。
比如:
源二叉树
镜像二叉树
示例
输入:
{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);
}
}