算法11:LeetCode_对称二叉树
题目: 给你一个二叉树的根节点 root
, 检查它是否轴对称。
下面给了2个例子:
package code.code_03; /** * 力扣 https://leetcode.cn/problems/symmetric-tree/ * 对称二叉树,又称镜面树 * * 给你一个二叉树的根节点 root , 检查它是否轴对称。 * 输入 root = [1,2,2,3,4,4,3] 输出:true * 输入 root = [1,2,2,null,3,null,3] false */ public class Code03_MirrioTree { public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } } public boolean isMirrioNode(TreeNode h1, TreeNode h2) { if (h1 == null && h2 == null) { return true; } if ((h1 == null && h2 != null) || (h1 != null && h2 == null) || h1.val != h2.val){ return false; } /*if ((h1 == null ^ h2 == null) || h1.val != h2.val) { return false; }*/ return isMirrioNode(h1.left, h2.right) && isMirrioNode(h1.right, h2.left); } public boolean isSymmetric(TreeNode root) { if (root == null) { return false; } return isMirrioNode(root.left, root.right); } public static void main(String[] args) { } }