层序遍历

参考文章:代码随想录

解题思路:

层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。

需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。

而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。

public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();Deque<TreeNode> deque = new LinkedList<>();if (root != null) deque.add(root);while (!deque.isEmpty()) {int size = deque.size();List<Integer> list = new ArrayList<>();while (size-- > 0) {TreeNode node = deque.peek();deque.poll();list.add(node.val);if (node.left != null) deque.add(node.left);if (node.right != null) deque.add(node.right);}result.add(list);}return result;}

226.翻转二叉树

参考文章:代码随想录

解题思路:

其实就是遍历二叉树,将节点的左右孩子进行呼唤即可,可以使用前序遍历或是后续遍历,注意中序遍历不可行,主要原因是当左孩子完成翻转后,到中结点会进行左右孩子的交换,然后再去完成此时右孩子的翻转时,其实本质上还是翻转的原来的左子树,因此达不到整体翻转的效果。

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

101. 对称二叉树

参考文章: 代码随想录

参考视频:新学期要从学习二叉树开始! | LeetCode:101. 对称二叉树_哔哩哔哩_bilibili

解题思路:

通过递归的方法去解决问题,遍历选择后序遍历,因为要得到左右孩子的比较结果,最终传到中间的结点,因此选择这种遍历方式,因为是对称二叉树,因此比较的俩结点在外侧是左孩子的左孩子对比右孩子的右孩子,内侧则是左孩子的右孩子对比右孩子的左孩子,当两个布尔值的与运算结果返回给父节点。

boolean result = true;if (root != null) {result = compare(root.left, root.right);}return result;}public boolean compare(TreeNode left, TreeNode right) {if (left == null && right != null) {return false;} else if (left != null && right == null) {return false;} else if (left == null && right == null) {return true;} else if (left.val != right.val) {return false;} else {boolean outside = compare(left.left, right.right);boolean inside = compare(left.right, right.left);return outside && inside;}}

代码随想录算法训练营第十五天| 102层序遍历、226.翻转二叉树、101. 对称二叉树相关推荐

  1. 代码随想录算法训练营第十五天 | 102. 二叉树的层序遍历 | 226.翻转二叉树 | 101. 对称二叉树

    递归三部曲 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 102. 二叉树的层序遍历 题解及想法 解法一 :递归法 class Solution {public List<Lis ...

  2. 代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2

    代码随想录算法训练营第十五天 | 层序遍历 10,226.翻转二叉树,101.对称二叉树 2 1.1 层序遍历 10 1.1.1 102.二叉树的层序遍历 思路: 通过队列实现 class Solut ...

  3. 代码随想录算法训练营三十五天|860,406,452

    860. 柠檬水找零 贪心,20-10+5,10-5 class Solution { public:bool lemonadeChange(vector<int>& bills) ...

  4. 代码随想录算法训练营第二十五天|216.组合总和III、17.电话号码的字母组合

    LeetCode 216.组合总和III 链接:216. 组合总和 III 思路: 这道题目与77. 组合仅有一点不同,就是这道题目找到的组合的总和需要满足额外的条件.所以在递归终止条件里增加了一个条 ...

  5. 代码随想录算法训练营第二十五天|216.组合总和III 17.电话号码的字母组合

    目录 LeeCode 216.组合总和III LeeCode 17.电话号码的字母组合 LeeCode 216.组合总和III 216. 组合总和 III - 力扣(LeetCode) 思路:本题和 ...

  6. 代码随想录算法训练营第十六天[二刷] | 找寻二叉的深度

    104.二叉树的最大深度 递归 首先知道 题目问的整个树的最大的深度 = root 的高度 这样用post-order 写起来会很方便 为什么Post - order? 处理完子树之后,再 把数值(本 ...

  7. 代码随想录算法训练营第二十四天 | 理论基础、77. 组合

    学习目标 学习回溯算法理论基础, 并进行练习 学习内容 回溯算法理论基础 文章链接:回溯算法理论基础 小结:回溯算法模板: void backtracking(参数) {if (终止条件) {存放结果 ...

  8. 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和

    代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体 ...

  9. 代码随想录算法训练营第35天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球

    代码随想录算法训练营第35天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球 860.柠檬水找零 406. 根据身高重建队列 452. 用最少数量的箭引爆气球 860. ...

最新文章

  1. 基于OpenGL编写一个简易的2D渲染框架-03 渲染基本几何图形
  2. centosx64 6.3安装视频组件
  3. Oracle 如何设置shared pool 和sga大细, 应该设置几大
  4. Metasploit profiling工具的利用
  5. 字体设置_word字体设置:如何为常用字体设置快捷键
  6. 鸿蒙比不了IOS,比苹果的iOS14还流畅,华为鸿蒙2.0可以啊!
  7. 前端学习(1383):多人管理项目3
  8. AJAX设置光标离开自动提交,Ajax自动提交和刷新页面
  9. python 3.6.5 shell_linux安装python3.6.5
  10. width:100%与绝对定位同时存在,偏移出父级容器
  11. python剑指offer剪绳子
  12. 5G及移动边缘计算(MEC)学习笔记(2)
  13. 【Keil】分享Keil5修改为黑色炫酷主题的一种方法
  14. matlab画直方图并拟合泊松分布,将泊松分布拟合为数据(直方图+直线)
  15. 冶金工程在计算机应用,冶金工程专业计算机应用能力分析
  16. R语言--Apriori关联分析
  17. Xshell 连接服务器失败的解决方法
  18. 回收站被清空还能否找回文件
  19. twitter下载网络教程_糟糕的主意:喜p Twitter广告网络
  20. 2021年起重机司机(限桥式起重机)考试题库及起重机司机(限桥式起重机)找解析

热门文章

  1. excel:对带单位的数据进行计算(相乘、求和)
  2. Android图像识别扫名片识别技术SDK
  3. 摘要、签名、加密、证书
  4. oracle时间相减得到天_Oracle 时间相减得出毫秒、秒、分、时、天,,【转】
  5. K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
  6. hashmap的java程序_HashMap的简单使用
  7. 年成交额超3000亿元 极有家或将成为淘宝的下一个万亿市场
  8. osg(osgearth)倾斜模型单体化
  9. Mysql多对多关系利用中间表查询
  10. 实时热力图_热浪滚滚的夏天,来聊聊热力图吧(上)