java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。
原题
给定一个二叉树,检查它是否是镜像对称的。
原理
以根节点划分中心线,检查是否镜像对称。
一个指向从左节点出发,一个节点从右节点出发比较。
左节点的左孩子和右节点的右孩子比较
左节点的右孩子和右节点的左孩子比较
一旦不符合(非对称/值不相同)就返回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/
java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。相关推荐
- 二叉树最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
前言: 二叉树刷题是有固定思维的,请移步 README]二叉树刷题框架 二叉树最大深度 题目 点击跳转:LeetCode 此题如果从上向下前序遍历进行判断复杂度过高,因为每次判断一个结点都会涉及到很多 ...
- 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,
题目描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 示 ...
- 2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p
2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x ...
- 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 三种情况: 1).如果左边为空,右边不为空,则右边的第一个节点就为公共祖先 2).如果右边为空,左边不为空,则左边的第一个节点就为公共祖先 3) ...
- Java实验8 T6.绘制一个二叉树
文章目录 题目要求 Java代码 运行结果 题目要求 绘制如下形式的一个二叉树 Java代码 package text8;import javax.imageio.ImageIO; import ja ...
- 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先).&q ...
- Java中找出s字符串的回文_给定一个字符串 s,找到 s 中最长的回文子串。
题目描述:给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路: 判断s[i..j]是否是回文字符串,依赖于s[i+1...j-1],这种一个问题的结果依赖于 ...
- java 求最长重复子串_给定一个字符串,求出其最长的重复子串。
#include #include #include #include using namespace std; //给定一个字符串,求出其最长的重复子串 //方法一 string lsubstr_1 ...
- Java:数列排序 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n个 ...
最新文章
- Python之装饰器
- java匿名启动线程_用java实现匿名内部类启动线程
- (三)Docker四种网络模式
- java使用:: 表达式_Java 13:切换表达式的增强功能
- python pd Series 添加行_Python数据分析与挖掘的常用工具
- 怎么关闭电脑开机自动启动的程序_软件自动开启很烦人?如何彻底关掉Mac电脑开机自动开启的应用程序?...
- No rule to make target ...
- springboot项目报错JedisConnectionException: Could not get a resource from the pool
- 52.3. HAVING
- java sql update用法_使用if else条件将SQL UPDATE语句转换为php(codeigniter)
- win10开启自带wifi共享操作步骤
- linux进入不了系统怎么处理,LINUX无法进入系统
- 如何查看某台计算机的IP地址 物理地址,显示ip:如何查看电脑ip地址和物理地址(地址)? _ 惠州SEO...
- 如何向别人推荐(分享)一本书
- 文件MD5/SHA等校验码校验
- 常见的弱口令爆破工具
- 【酷站】中国互联网Web2.0 Top 100
- 刘强东不学编程,今天很可能没有京东......一位码农的发家致富史
- 最新仿商城发卡网源码,带图片展示
- SNS游戏开发工程师程延辉:介绍开心农场架构