本文是力扣LeeCode-101. 对称二叉树 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。
给你一个二叉树的根节点 root , 检查它是否轴对称。
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
思路
本题采用递归的方式
如图所示,满足类似镜面对称即可
1 1
/ \ / \
2 3 3 2
/ \ / \ / \ / \
7 6 5 4 4 5 6 7
递归函数的两个条件(终止条件):
left
和right
都为空 trueleft
和right
有一个为空 false- 递归的比较
left.left
和right.right
,比较left.right
和right.left
,以及left.val == right.val
整体true/false,由实际判断确定
递归代码实现
class Solution {
public boolean isSymmetric(TreeNode root) {
return isMirror(root.left,root.right); //调用递归函数,比较左节点,右节点
}
public boolean isMirror(TreeNode left,TreeNode right){
if(left==null && right==null)return true;
if(left==null||right==null)return false;
//再递归的比较 左节点的左孩子 和 右节点的右孩子;以及比较 左节点的右孩子 和 右节点的左孩子
return (left.val == right.val) && isMirror(left.left,right.right) && isMirror(left.right,right.left);
}
}
重点:递归前,需要想清楚,遍历的顺序
大佬们有更好的方法,请不吝赐教,谢谢。