首页 > 编程语言 >代码随想录算法训练营第十五天 | 层序遍历 ,226.翻转二叉树,101.对称二叉树

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

时间:2023-12-27 20:59:00浏览次数:39  
标签:结点 遍历 层序 随想录 二叉树 101 第十五天 LeetCode

一、二叉树层序遍历

题目链接:

LeetCode 102. 二叉树的层序遍历

LeetCode 107. 二叉树的层序遍历 II

LeetCode 199. 二叉树的右视图

LeetCode 637. 二叉树的层平均值

LeetCode 429. N 叉树的层序遍历

LeetCode 515. 在每个树行中找最大值

LeetCode 116. 填充每个节点的下一个右侧节点指针

LeetCode 117. 填充每个节点的下一个右侧节点指针 II

LeetCode 104. 二叉树的最大深度

LeetCode 111. 二叉树的最小深度

学习:

1. 迭代遍历

需要一个队列来辅助存放结点。当层的结点全部出队,并且按照顺序将他们的孩子结点依次入队

2. 递归遍历

定义level,表示每一层的深度,便于将结点对应存入

二、226. 翻转二叉树

题目链接:

LeetCode 226. 翻转二叉树

学习前:

思路:

层序遍历非递归

时间复杂度:O(n) n为二叉树的结点数

空间复杂度:O(n)

学习后:

迭代遍历的4种遍历方式均可,个人觉得层序遍历最好理解

三、101. 对称二叉树

题目链接:

LeetCode 101. 对称二叉树

学习前:

思路:

迭代层序遍历。当队首元素出队时,将他的孩子结点的值存在list中,若为空则存一个常量200。在每一层遍历结束之后,判断list是否是对称的,若不是则返回false

学习后:

核心思路是分成内外侧两个部分进行比较,而我的方法是将空结点进行填充,形成满二叉树,比较每一层的结点值是否是对称的

四、学习总结

  1. 时间:3h

  2. 掌握了层序遍历

  3. 自己想到的是迭代层序遍历去解决,还需要对递归思路多练习

标签:结点,遍历,层序,随想录,二叉树,101,第十五天,LeetCode
From: https://www.cnblogs.com/amulet/p/17931388.html

相关文章

  • [LeetCode Hot 100] LeetCode102. 二叉树的层序遍历
    题目描述思路方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNodelef......
  • [LeetCode Hot 100] LeetCode543. 二叉树的直径
    题目描述思路所谓二叉树的直径,就是左右子树的最大深度之和。方法一:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=va......
  • [LeetCode Hot 100] LeetCode104. 二叉树的最大深度
    题目描述思路熟练掌握二叉树的遍历算法方法一:层序遍历(迭代)+计数/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;......
  • [LeetCode Hot 100] LeetCode110. 平衡二叉树
    题目描述思路LeetCode104.二叉树的最大深度变种方法一:后序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.......
  • [LeetCode Hot 100] LeetCode111. 二叉树的最小深度
    题目描述思路二叉树的最小深度就是第一个叶子节点所在的层数方法一:前序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intva......
  • [LeetCode Hot 100] LeetCode94. 二叉树的中序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归:额外写一个函数voidinOrder(TreeNodenode,Listres)迭代:令cur=root,一直往左子树找,找到最后一个左子节点,当cur为空,就开始处理栈顶元素(将栈顶元素加入结果集),随后将cur设置为右子节点,继续执行以上操作。方法一:递归/***......
  • [LeetCode Hot 100] LeetCode144. 二叉树的前序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归代码:额外写一个函数voidpreOrder(TreeNodenode,Listres)迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*......
  • [LeetCode Hot 100] LeetCode145. 二叉树的后序遍历
    题目描述思路递归:额外写一个函数voidpostOrder(TreeNodenode,Listres)迭代:前序遍历:根---左---右将前序遍历改造成:根---右---左然后反转根右左为:左---右---根,即为后序遍历优化一下:while(!stack.isEmpty()){ TreeNodenode=stack.pop(); res.addFirst(node.......
  • 代码随想录day 01 二分法与快慢指针
    二分法题目:实现代码如下:值得注意的是实现的方法是利用左闭右开区间还是左闭右闭区间根据选择的不同,判断条件不同将迭代的值带入到条件看符不符合区间要求就不会混淆二者快慢指针题目:本题实际上可以通过二重for循环暴力求解,复杂度是O(n^2)但是测试过程中发现超时遂放弃......
  • 代码随想录算法训练营第十四天 | 二叉树理论基础,递归遍历,分别迭代遍历, 统一迭代遍历
    一、二叉树理论基础学习:1.从二叉树是否包含数值进行分类:无数值:完全二叉树和满二叉树有数值的:二叉搜索树和平衡二叉搜索树(AVL,Adelson-VelskyandLandis)。其中二叉搜索树指数值按照从小到大的顺序是左子树<根结点<右子树,平衡指的是左右子树高度差不超过12.二叉树存......