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

发布时间 2023-12-27 20:45:07作者: amulet

一、二叉树层序遍历

题目链接:

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. 自己想到的是迭代层序遍历去解决,还需要对递归思路多练习