题目
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
分析
因为二叉树是对称的,所以将该树自己与自己的递归比较,分为三种情况:
(1)当两棵树都为空时,返回true;
(2)当只有一颗树为空时,返回false;
(3)当两棵树都不为空时,进行递归判断,判断条件为:pRoot1的左孩子==pRoot2的右孩子 以及 pRoot1的右孩子==pRoot2的左孩子
代码
1 boolean isSymmetrical(TreeNode pRoot){ 2 return isS(pRoot, pRoot); 3 } 4 5 boolean isS(TreeNode pRoot1, TreeNode pRoot2){ 6 if(pRoot1==null && pRoot2==null) 7 return true; 8 if(pRoot2==null || pRoot1==null){ 9 return false; 10 } 11 if(pRoot1.val!=pRoot2.val) 12 return false; 13 return isS(pRoot1.left, pRoot2.right) && isS(pRoot1.right, pRoot2.left); 14 }