【剑指offer】对称的二叉树-Java实现

【剑指offer】对称的二叉树-Java实现

题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

1. 递归法

1. 分析

  1. 先判断有没有子树 没有也是对成;
  2. 若有子树的话,判断子树是不是镜像的;若不是直接输出false,
    若是镜像的,判断左子树的左节点和右子树的右节点,同时左子树的右节点与右子树的左节点是否相等。
  3. 直到没有子树为null

2.代码

 class Solution {
    boolean jude(TreeNode node1,TreeNode node2){
        if(node1 == null && node2 == null){
            return true;
        }
        else if (node1 == null || node2 == null){
            return false;
        }
        if (node1.val != node2.val){
            return false;
        }
        else {
            return jude(node1.left,node2.right) && jude(node1.right,node2.left);
        }
        
    }
    boolean isSymmetrical(TreeNode pRoot){
        if (pRoot==null){
            return true;
        }
        else{
            return jude(pRoot.left, pRoot.right);
        } 
}
}

你可能感兴趣的:(【剑指offer】对称的二叉树-Java实现)