题解 | #对称的二叉树#

对称的二叉树

http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

递归

1、如果有左右子树,判断左右子树是否对称相等

2、如果都没有左右子树,返回true

*****

判断左右子树是否对称相等

  1. 如果node1不等于node2的值val,return false

  2. 如果node1有左子树时

    • 如果node2有右子树;递归判断node2的左右子树是否对称相等 ;否则返回false
  3. 同理与2相反

  4. 如果node2有左右节点;return false 否则返回true( 到了这一步,node1必然是左右节点均为null)

    public class Solution {
     boolean isSymmetrical(TreeNode pRoot) {
         if(pRoot==null){
             return true;
         }
         //如果左右子树都存在
         if(pRoot.left!=null&&pRoot.right!=null){
             return JudNodeEque(pRoot.left,pRoot.right);
         }
         if(pRoot.left==null&&pRoot.right==null)
         //判断左右子树的是对称相等
         return true;
         return false;
     }
     public boolean JudNodeEque(TreeNode node1,TreeNode node2){
    
         //如果node1!=node2的值val,return false
         if(node1.val!=node2.val){
             return  false;
         }
         //1、如果node1有左子树时
         //2、如果node2有右子树;递归 ;否则返回false
         if(node1.left!=null){
             if(node2.right!=null){
                 return JudNodeEque(node1.left,node2.right);
             }else{
                 return false;
             }
         }
         //同理与1、2相反
         if(node1.right!=null){
             if(node2.left!=null){
                 return JudNodeEque(node1.right,node2.left);
             }else{
                 return false;
             }
         }
         // 到了这一步,node1必然是左右节点均为null
         if(node2.left!=null||node2.right!=null){
             return false;
         }
         //如果node2有左右节点;return false
         return true;
    
     }
    

}

```

全部评论

相关推荐

vegetable_more_exercise:1-1.5万,没错啊,最少是1人民币,在区间内
点赞 评论 收藏
分享
比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务