【对称二叉树(101-java)】
2023-09-27 14:29:28 时间
对称二叉树(101-java)
给你一个二叉树的根节点
root
, 检查它是否轴对称。示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
public class LC46_101_isSymmetric {
//递归实现
public static boolean isSymmetric(TreeNode root) {
if (root == null || (root.left == null && root.right == null)) {
return true;
}
return dfs自己(root.left, root.right);
}
static boolean dfs自己(TreeNode left, TreeNode right) {
if (left == null && right == null) {
return true;
}
if (left == null || right == null) {
return false;
}
if (left.val != right.val) {
return false;
}
return dfs自己(left.left, right.right) && dfs自己(left.right, right.left);
}
//队列
public static boolean isSymmetric队列(TreeNode root) {
if (root == null || (root.left == null && root.right == null)) {
return true;
}
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(root.left);
queue.add(root.right);
while (queue.size() > 0) {
TreeNode left = queue.removeFirst();
TreeNode right = queue.removeFirst();
if (left == null && right == null) {
continue;
}
if (left == null || right == null) {
return false;
}
if (left.val != right.val) {
return false;
}
queue.add(left.left);
queue.add(right.left);
queue.add(left.right);
queue.add(right.left);
}
return true;
}
public static void main(String[] args) {
TreeNode node = TreeNode.generateRandomBST(1, 100, 3);
System.out.println(isSymmetric队列(node));
}
}
相关文章
- java之简单工厂
- java CopyOnWriteArrayList与CopyOnWriteArraySet详解
- java用正则方法验证文件名是否合法
- 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口
- 如何利用JConsole观察分析Java程序的运行并进行排错调优_java
- Java 10 局部变量类型推断是什么?
- java整体打印二叉树
- Java知识点《一》
- 【java web篇】Servlet执行流程与生命周期
- java.util.Date和java.sql.Date的区别和相互转化
- java中堆和栈的区别
- java实现http的post和get
- java 字节流和字符流转换类InputStreamReader,OutPutStreamReader
- Python和Java的硬盘夜话
- 游戏服务器需要学习哪些知识(Java)
- LeetCode-110. 平衡二叉树(java)
- LeetCode-101. 对称二叉树(java)
- 【二叉树中第二小的节点(671-java)】
- 【二叉树的坡度(563-java)】
- 【翻转二叉树(226-java)】