题干
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入: root = [1,2,2,3,4,4,3]
输出: true
思路
主要考察点:递归
- 不同于深搜广搜这种一次访问一个节点的算法,递归需要一次访问一层。
- 怎么样一次访问一层?dfs(left.left,right.right) && dfs(right.left,left.right);
解题
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root==null) return true;
return dfs(root.left,root.right);
}
public boolean dfs(TreeNode left,TreeNode right){
if (left==null && right==null) return true;
if (left==null|right==null) return false;
if (left.val!=right.val)
return false;
else
return dfs(left.left,right.right) && dfs(right.left,left.right);
}
}