当前位置: 首页 > news >正文

(二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2

层序遍历 10

102. 二叉树的层序遍历 - 力扣(LeetCode)
代码随想录 (programmercarl.com)
综合代码:
class Solution{public List<List<Integer>> resList = new ArrayList<List<Integer>>();public List<List<Integer>> levelOrder(TreeNode root){checkFund02(root);return resList;}public void checkFund02(TreeNode node){if(node == null) return;//创建一个队列,用于存储待处理的节点Queue<TreeNode> que = new LinkedList<TreeNode>();que.offer(node);while(!que.isEmpty()){List<Integer> itemList = new ArrayList<Integer>();int len = que.size();for(int i = 0; i<len; i++){TreeNode tmpNode = que.poll();itemList.add(tmpNode.val);if(tmpNode.left != null) que.offer(tmpNode.left);if(tmpNode.right != null) que.offer(tmpNode.right);}resList.add(itemList);}}
}

226.翻转二叉树

226. 翻转二叉树 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

翻转一棵二叉树。

226.翻转二叉树

这道题不能使用中序遍历,因为会翻转2次,我使用的是后序遍历:

//确定参数的返回值
public TreeNode invertTree(TreeNode root){//确定终止条件    if(root == null){return null;}//确定单层递归的逻辑://后序遍历翻转二叉树invertTree(root.left);invertTree(root.right);invertTree(root);return root;
}//定义一个私有方法,用于交换给定节点的左右孩子
private void swapChildren(TreeNode root){TreeNode tmp = root.left;root.left = root.right;root.right = tmp;
}

更简洁版本:

class Solution {public TreeNode invertTree(TreeNode root) {if (root == null)return root;TreeNode temp = root.left;root.left = invertTree(root.right);root.right = invertTree(temp);return root;}
}

101.对称二叉树 2

class Solution {public boolean isSymmetric(TreeNode root) {if(root==null || (root.left==null && root.right==null)) {return true;}//用队列保存节点LinkedList<TreeNode> queue = new LinkedList<TreeNode>();//将根节点的左右孩子放到队列中queue.add(root.left);queue.add(root.right);while(queue.size()>0) {//从队列中取出两个节点,再比较这两个节点TreeNode left = queue.removeFirst();TreeNode right = queue.removeFirst();//如果两个节点都为空就继续循环,两者有一个为空就返回falseif(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.right);//将左节点的右孩子,右节点的左孩子放入队列queue.add(left.right);queue.add(right.left);}return true;}
}

相关文章:

  • 全新交友盲盒+付费进群二合一源码 包含全套源码+教程
  • 苹果CMS:通用清理后门排查
  • Github 2024-05-27 开源项目日报 Top10
  • 机器学习 - toad 0.10 和 0.13 之间的区别
  • MATLAB学习:频谱图的绘制
  • Rviz 复选框插件
  • 小猪APP分发:让你的应用轻松上架,免费分发
  • eNSP学习——OSPF被动接口配置
  • 同一份工程代码上传到多个不同的git地址的配置方法
  • Vulnhub靶机 whowantsobeking :1 打靶 渗透详细过程(萌新)
  • 常见文本分类小模型
  • 滚珠花键在工业自动化领域中有什么优势?
  • 在Bash中解析命令行参数的两种样例脚本
  • layui table在不发送请求时更新templet操作列
  • 小程序唯品会Authorization sign
  • CentOS7简单部署NFS
  • django开发-定时任务的使用
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • flask接收请求并推入栈
  • Gradle 5.0 正式版发布
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Python3爬取英雄联盟英雄皮肤大图
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • socket.io+express实现聊天室的思考(三)
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • underscore源码剖析之整体架构
  • v-if和v-for连用出现的问题
  • Vue 重置组件到初始状态
  • 阿里云Kubernetes容器服务上体验Knative
  • 创建一个Struts2项目maven 方式
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 小程序测试方案初探
  • 写给高年级小学生看的《Bash 指南》
  • 延迟脚本的方式
  • 运行时添加log4j2的appender
  • ​Spring Boot 分片上传文件
  • ​你们这样子,耽误我的工作进度怎么办?
  • # 透过事物看本质的能力怎么培养?
  • #ifdef 的技巧用法
  • (2)空速传感器
  • (二)c52学习之旅-简单了解单片机
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四)库存超卖案例实战——优化redis分布式锁
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)scrum常见工具列表
  • (转)平衡树
  • .Net Core 中间件与过滤器
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @RequestMapping 的作用是什么?