leetcode-对称的二叉树

基本思路

基本思路就是通过递归来判断
对于根节点,就是判断左子树和右子树是否相等,从根节点开始递归。
之后判断左子树和右子树是否相等,具体为:
1.如果左右子树都是空的,则相等
2.如果存在一个为空一个不为空,则不相等
3.如果都不为空,那么比较左右子树的值,如果不相等则不相等,如果相等的话,当前位置相等,还需判断左子树的左子树和右子树的右子树,左子树的右子树和右子树的左子树是否相等(对称),则需要递归判断一次,且结果要与当前结果进行相加,即用&&判断是否为真。

实现代码


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        TreeNode left = root.left,right = root.right;
        return is(left,right);
    }

    public boolean is(TreeNode left,TreeNode right){
        if(left == null && right == null) return true;
        else if(left!=null && right!=null){
            if(left.val == right.val){
                return true&&is(left.left,right.right)&&is(left.right,right.left);
            }else{
                return false;
            }
        }
        else{
        return false; 
        }
    }
}

posted @ 2021-12-06 20:54  Nevesettle  阅读(28)  评论(0编辑  收藏  举报