<>剑指 Offer 28. 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1 / \ 2 2 \ \ 3 3
<>示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

<>示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

<>解题
package tree.二叉树的镜像; import java.util.ArrayList; import java.util.Arrays;
import java.util.LinkedList; import java.util.List; /** * @Auther: truedei *
@Date: 2020 /20-6-10 * @Description: 二叉树镜像 */ public class Solution { static
public boolean isSymmetric(TreeNode root) { //根节点为null时,返回true,说明是 return root
== null?true:check(root.left,root.right); } private static boolean check(
TreeNode left, TreeNode right) { if(left == null && right==null) return true; if
(left==null || right==null || left.val != right.val) return false; return check(
left.left,right.right) && check(left.right,right.left); } public static void
main(String[] args) { TreeNode t1 = new TreeNode(1); TreeNode t2 = new TreeNode(
2); TreeNode t3 = new TreeNode(2); TreeNode t4 = new TreeNode(3); TreeNode t5 =
new TreeNode(4); TreeNode t6 = new TreeNode(4); TreeNode t7 = new TreeNode(3);
t1.left=t2; t1.right=t3; t2.left=t4; t2.right=t5; t3.left=t6; t3.right=t7;
boolean bool = isSymmetric(t1); System.out.println(bool); } } class TreeNode {
int val;//每个节点存放的数据 TreeNode left;//左节点 TreeNode right;//右节点 TreeNode(int x) {
val= x; } }
核心代码:
static public boolean isSymmetric(TreeNode root) {
//如果传过来的是null,则返回true,否则就去检查左右节点 return root == null?true:check(root.left,root.
right); } //负责递归检查左右节点 private static boolean check(TreeNode left, TreeNode
right) { //如果左右都为null,说明该二叉树也是对称的 if(left == null && right==null) return true;
//如果缺少左右子节点的某一个,或者不相等,那就不是一颗对称二叉树 if(left==null || right==null || left.val !=
right.val) return false; //否则就检查,该二叉树的左节点的左和右节点的右;和检查另外两个 //如果都是true,说明对称 return
check(left.left,right.right) && check(left.right,right.left); }

技术
©2019-2020 Toolsou All rights reserved,
Android 11正式版发布!最短路径Dijkstra (Python3)ToastUtils 的使用python读取、写入txt文本内容STM32红外寻迹小车科幻成真!“三体”被发现了PostgreSQL: 九. 索引@Repository注解的作用springboot多配置文件配置(精华)2020年7月13日 微信小程序 页面间通信