对称的二叉树
题目:
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
限制:
0 <= 节点个数 <= 1000
解答:
递归判断:左边的左边和右边的右边
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public boolean isSymmetric(TreeNode root) { 12 if(root == null){ 13 return true; 14 } 15 return match(root.left, root.right); 16 } 17 18 private boolean match(TreeNode left, TreeNode right){ 19 if(left == null && right == null){ 20 return true; 21 } 22 if(left == null || right == null){ 23 return false; 24 } 25 if(left.val != right.val){ 26 return false; 27 } 28 return match(left.left, right.right) & match(left.right, right.left); 29 } 30 }