一、二叉树层序遍历
题目链接:
LeetCode 116. 填充每个节点的下一个右侧节点指针
LeetCode 117. 填充每个节点的下一个右侧节点指针 II
学习:
1. 迭代遍历
需要一个队列来辅助存放结点。当层的结点全部出队,并且按照顺序将他们的孩子结点依次入队
2. 递归遍历
定义level,表示每一层的深度,便于将结点对应存入
二、226. 翻转二叉树
题目链接:
学习前:
思路:
层序遍历非递归
时间复杂度:O(n) n为二叉树的结点数
空间复杂度:O(n)
学习后:
迭代遍历的4种遍历方式均可,个人觉得层序遍历最好理解
三、101. 对称二叉树
题目链接:
学习前:
思路:
迭代层序遍历。当队首元素出队时,将他的孩子结点的值存在list中,若为空则存一个常量200。在每一层遍历结束之后,判断list是否是对称的,若不是则返回false
学习后:
核心思路是分成内外侧两个部分进行比较,而我的方法是将空结点进行填充,形成满二叉树,比较每一层的结点值是否是对称的
四、学习总结
-
时间:3h
-
掌握了层序遍历
-
自己想到的是迭代层序遍历去解决,还需要对递归思路多练习