关于java:NoteLeetCode101

7次阅读

共计 702 个字符,预计需要花费 2 分钟才能阅读完成。

原题

给定一个二叉树,查看它是否是镜像对称的。

原理

以根节点划分中心线,查看是否镜像对称。

一个指向从左节点登程,一个节点从右节点登程比拟。

  • 左节点的左孩子和右节点的右孩子比拟
  • 左节点的右孩子和右节点的左孩子比拟

一旦不合乎(非对称 / 值不雷同)就返回 false
直到叶子节点的空节点依然没有 false,就返回 true

代码

class Solution {public boolean isSymmetric(TreeNode root) {if(root==null) {return true;}
        return dfs(root.left,root.right);
    }
    public boolean dfs(TreeNode left, TreeNode right) {
        // 一旦不合乎就返回 false
        // 如果能遍历到叶子节点阐明为 true
        if(left==null && right==null) {return true;}
        // 一个空一个非空返回 false
        if(left==null || right==null) {return false;}
        // 值不同返回 false
        if(left.val!=right.val) {return false;}
        // 左节点的左孩子和右节点的右孩子比拟
        // 左节点的右孩子和右节点的左孩子比拟
        return dfs(left.left,right.right) 
        &&dfs(left.right,right.left);
    }
}
//https://leetcode-cn.com/problems/symmetric-tree/solution/dong-hua-yan-shi-101-dui-cheng-er-cha-shu-by-user7/
正文完
 0