题目
请设计一个函数判断一棵二叉树是否 轴对称 。
示例 1:
输入:root = [1,2,2,null,3,null,3]
输出:false
解释:从图中可看出最后一层的节点不对称。
提示:
0 <= 节点个数 <= 1000
代码
/**
- Definition for a binary tree node.
- public class TreeNode {
-
int val;
-
TreeNode left;
-
TreeNode right;
-
TreeNode() {}
-
TreeNode(int val) { this.val = val; }
-
TreeNode(int val, TreeNode left, TreeNode right) {
-
this.val = val;
-
this.left = left;
-
this.right = right;
-
}
- }
*/
class Solution {
public boolean checkSymmetricTree(TreeNode root) {
if(root == null ||(root.left == null&& root.right == null)){
return true;
}
return f(root.left,root.right);
}
public boolean f(TreeNode a,TreeNode b){
if(a== null && b == null){
return true;
}
if(anull||bnull){
return false;
}
if(a.val!= b.val){
return false;
}
return f(a.left,b.right)&&f(a.right,b.left);
}
}
时间复杂度:O(n)
空间复杂度:树的高度