/**
* 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 isSymmetric(TreeNode root) {
return check(root.left,root.right);
}
private boolean check(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;
}
return check(left.left,right.right) && check(left.right,right.left);
}
}
Java代码及测试用例
java复制代码
public class LeetCode101SymmetryBinaryTree {
public boolean isSymmetric(TreeNode root) {
return check(root.left,root.right);
}
private boolean check(TreeNode left,TreeNode right){
if(left == null && right == null){
return true;
}
if(left == null || right == null){
return false;
}
if (left.value != right.value){
return false;
}
return check(left.left,right.right) && check(left.right,right.left);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(
1,
new TreeNode(2,new TreeNode(3),new TreeNode(4)),
new TreeNode(2,new TreeNode(4),new TreeNode(3))
);
LeetCode101SymmetryBinaryTree res = new LeetCode101SymmetryBinaryTree();
System.out.println(res.isSymmetric(root));
TreeNode root1 = new TreeNode(
11,
new TreeNode(7,
new TreeNode(5,
new TreeNode(3),
new TreeNode(6)),
new TreeNode(9,
new TreeNode(2),
new TreeNode(8))
),
new TreeNode(11,
new TreeNode(4,
new TreeNode(9),
new TreeNode(28)),
new TreeNode(5)
)
);
System.out.println(res.isSymmetric(root1));
}
}