101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

题意:

给你一个二叉树的根节点 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, 并将错误回归 当左右子树同时传递完成, 代表层数一致, 检查节点数值 之后按照对称性, 传递

  • 左节点的左子树, 右节点的右子树;

  • 右节点的左子树和左节点的右子树