提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
提示:这里可以添加本文要记录的大概内容:
2月8日练习内容
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目-
1.题目描述
给你一个二叉树的根节点 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/symmetric-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.思路与代码
2.1 思路
1.判别该树是否为空,空树也为对称二叉树
2.遍历树的左子树与右子树,判别其是否相等
3.若左子树和右子树都为空,则表示该树只有一个根结点,为对称二叉树,输出true
4.若左子树中任意一个为空,或者左子树与右子树的值不相等,则表示该树不是对称二叉树,输出false
5.递归遍历该左子树的左子结点和右子树的右子结点,以及左子树的右子结点和右子树的左子结点
2.2 代码
代码如下(示例):
/**
* Definition for a binary tree node.
* 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;
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
//空树一定对称
if(root == null){
return true;
}
boolean flag = isSymmetricTo(root.left,root.right);
return flag;
}
public boolean isSymmetricTo(TreeNode left ,TreeNode right){
//左右结点为空,则表明该树只有根结点,为对称二叉树
if(left == null && right == null){
return true;
}
//有一个结点为空,或者左右结点不相等
if(left == null || right == null || left.val != right.val){
return false;
}
//继续遍历
return isSymmetricTo(left.left,right.right) && isSymmetricTo(left.right,right.left);
}
}
总结
提示:这里对文章进行总结: