101. 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。
Categories:
题意:
给你一个二叉树的根节点 root
, 检查它是否轴对称。
难度:
简单
示例:
输入:root = [1,2,2,3,4,4,3] 输出:true
解析:
递归检查子树即可, 要求每一层的左右子树必须一致
先写辅助的递归, 在递归中检查左右子树是否一致, 也就是每一层左右节点是否相等
public boolean isMirror(TreeNode r1, TreeNode r2){
//第一出口, 左右节点同时为NULL
if(r1 == null && r2 == null){
return true;
}
//如果两个节点不同时为空, 代表左右两颗树层数不一致
if(r1 == null || r2 == null){
return false;
}
//递归体, 检查该层节点以及子树是否相等
return (r1.val == r2.val) &&
ismirror(r1.left, r2.right) &&
ismirror(r2.left, r1.right);
}
首先传递, 当某一层节点为NULL是回归
一旦发现左右子树不一致就返回false
, 并将错误回归
当左右子树同时传递完成, 代表层数一致, 检查节点数值
之后按照对称性, 传递
-
左节点的左子树, 右节点的右子树;
-
右节点的左子树和左节点的右子树