二叉树
一、树的遍历:
- 树的先序、中序、后序遍历(非递归)(递归)
- 层次遍历
- zigzag遍历(非递归)
二、树的反序列化:
- 给出前序和中序,求出二叉树
- 给出后序和中序,求出二叉树
三、树的路径:
- 输出树的所有路径:(前序遍历,深度遍历的特例)
- 二叉树中的最大路径和
- 路径求和等于给定值(两个递归求解)
- 路径总和(递归)【用列表的深拷贝】
四、树的高度
- 最大深度:(递归)
- 树的直径长度【对每个节点进行一个左子树高度加右子树高度的计算】
- 求树的坡度(递归,注意实例变量和静态变量的使用)
- 判断一棵树是否为高度平衡二叉树
五、两颗树
- 判断一颗树是否为另外一颗的子树:【在判断是否一样树之上还加一层循环】(递归加循环
- 判断两颗树是否一样。(递归)
- 寻找重复的子树
六、树【栈】
- 求树的所有路径和:
- 交换左右子树
- 求树的每层平均值
- 二叉树的层次遍历
- 二叉树的第二小节点
- 最长同值路径:
- 判断一棵树是否为高度平衡二叉树
七、树【DFS】
- 二叉树的反向层次遍历
- 最长同值路径
- 找到出现最多值的节点。【递归+Counter字典】
八、树总
- 树的深度
- 交换左右子树
- 求树的每层平均值
- 判断两颗树是否相同(递归)
- 输出树的所有路径:(前序遍历,深度遍历的特例)
- 二叉树的层次遍历:(BFS)
- 将有序数组转换为二叉搜索树(递归)
- 求树的坡度(递归,注意实例变量和静态变量的使用)
- 把二叉搜索树转换为累加树(递归,注意静态变量和实例变量的运用)
- 二叉树中的第二小的节点(BFS、DFS)
- 判断一棵树是否为高度平衡二叉树:(递归)
- 路径求和(两个递归求解):
- 路径总和(递归)【用列表的深拷贝】
- 二叉树剪枝(递归)
- 输出二叉树:【递归,重点在建立一个矩阵】
- 二叉树展开为链表【递归,重点在原地改动树的结构,需要额外的栈来存储树节点原本的值】
- 寻找重复的子树
- 验证二叉搜索树【递归,左子树所有节点都小于根节点,右子树所有节点都大于根节点,则返回正。】用两个循环或者两个递归
- 二叉树最大宽度【遍历整颗树,每个节点标记序号,每层最大节点减去最小节点的值+1----为结果】
- 建立所有不同的二叉搜索树【思想:遍历+递归,用生成器实现】
- 所有可能的完整二叉树【遍历+递归】
- 二叉搜索树-----依次输出最小值【迭代器】
- 二叉树增加一行【BFS实现】
- 二叉树最近公共祖先
九、二叉搜索树:
- 二叉搜索树的后序遍历序列