剑指offer-判断二叉树是否是对称的-java

题目描述

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

思路解析

  1. 判断是不是空结点,是的话直接是对称的
  2. 判断两边的左右子树是不是对称的,左右子树为空,返回true;有一个为空则是false
  3. 还要判断两个结点是不是相等的,然后左子树的左子树和右子树的右子树相等,中间的两个相等。

代码

public class TreeNode { 
    int val = 0; 
    TreeNode left = null; 
    TreeNode right = null; 
 
 
    public TreeNode(int val) { 
        this.val = val; 
 
 
    } 
} 
*/  
public class Solution {  
    boolean isSymmetrical(TreeNode pRoot)  
    {  
        if(pRoot == null)//空直接是对称的  
            return true;  
        return isSymmetrical(pRoot.right,pRoot.left);  
    }  
    boolean isSymmetrical(TreeNode right,TreeNode left){//判断左右是否相等的  
        if(right==null && left==null)//左右子树都为空  
            return true;  
        if(right==null || left==null)//左右子树有一个为空  
            return false;  
        //左右节点相等并且左子树左边的点和右子树右边的点相等的;还有中间的部分也是相等的  
        return left.val==right.val&&isSymmetrical(right.right,left.left) && isSymmetrical(left.right,left.right);  
    }  
}

猜你喜欢

转载自blog.csdn.net/lynn_baby/article/details/79927678