58对称的二叉树
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
leetcode 上的题
传统遍历都是 先左后右,
做这个题的时候,我们可以定义一种先右后左的遍历,然后对比2次遍历结果是否一致
需要注意的是空节点也要对比
1 /* 2 public class TreeNode { 3 int val = 0; 4 TreeNode left = null; 5 TreeNode right = null; 6 7 public TreeNode(int val) { 8 this.val = val; 9 10 } 11 12 } 13 */ 14 public class Solution { 15 boolean isSymmetrical(TreeNode root){ 16 if(root==null) return true; 17 return isSymm(root.left,root.right); 18 } 19 private boolean isSymm(TreeNode p1,TreeNode p2){ 20 if(p1==null && p2 ==null) return true; 21 if(p1==null || p2==null) return false; 22 if(p1.val!=p2.val) return false; 23 return isSymm(p1.left,p2.right)&&isSymm(p1.right,p2.left); 24 } 25 }