原题
给定一个二叉树,查看它是否是镜像对称的。
原理
以根节点划分中心线,查看是否镜像对称。
一个指向从左节点登程,一个节点从右节点登程比拟。
- 左节点的左孩子和右节点的右孩子比拟
- 左节点的右孩子和右节点的左孩子比拟
一旦不合乎(非对称/值不雷同)就返回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/