力扣101 对称树
题目:
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
- 树中节点数目在范围
[1, 1000]
内 -100 <= Node.val <= 100
解题思路:
判定一棵树是否是对称树首先一棵树的根节点是不会影响整棵树的对称性需要单独考虑,其次就是递归的考虑左右两颗子树是否是对称树。
代码:
/**
* 判断一棵树是否是对称树
*/
public class IsMirrorTree {
//1.首先定义一个树节点的类
public static class TreeNode{
public int value;
public TreeNode left;
public TreeNode right;
public TreeNode(int value) {
this.value = value;
}
}
//2.首先传入的是整棵树的一个头节点该节点不会影响树的对称性
public static boolean isSymmetricTree(TreeNode root){
//这儿的第二个root可以认为是root`
return isMirrorTree(root,root);
}
//3.定义一个方法判断是否是对称树
public static boolean isMirrorTree(TreeNode h1,TreeNode h2){
//3.1如果一个节点为空一个节点不为空那么该树肯定不是对称树
if(h1 == null ^ h2 == null){
return false;
}
//3.2如果两个节点都为空那么这两个节点是对称的返回true
if (h1 == null && h2 == null){
return true;
}
//3.3判断对称首先节点的值要相等且左树要与右树相等右树要与左树相等
return h1.value == h2.value && isMirrorTree(h1.left,h2.right) && isMirrorTree(h1.right,h2.left);
}
}
标签:TreeNode,h1,public,力扣,对称,101,root,节点
From: https://www.cnblogs.com/ygstudy/p/17019179.html