二叉树

一、树的遍历:

  1. 树的先序、中序、后序遍历(非递归)(递归)
  2. 层次遍历
  3. zigzag遍历(非递归)

二、树的反序列化

  1. 给出前序和中序,求出二叉树
  2. 给出后序和中序,求出二叉树

三、树的路径:

  1.  输出树的所有路径:(前序遍历,深度遍历的特例)
  2. 二叉树中的最大路径和
  3. 路径求和等于给定值(两个递归求解)
  4. 路径总和(递归)【用列表的深拷贝】

四、树的高度

  1. 最大深度:(递归)
  2. 树的直径长度【对每个节点进行一个左子树高度加右子树高度的计算】
  3. 求树的坡度(递归,注意实例变量和静态变量的使用)
  4. 判断一棵树是否为高度平衡二叉树

五、两颗树

  1. 判断一颗树是否为另外一颗的子树:【在判断是否一样树之上还加一层循环】(递归加循环
  2. 判断两颗树是否一样。(递归)
  3. 寻找重复的子树

六、树【栈】

  1. 求树的所有路径和:
  2. 交换左右子树
  3. 求树的每层平均值
  4. 二叉树的层次遍历
  5. 二叉树的第二小节点
  6. 最长同值路径:
  7. 判断一棵树是否为高度平衡二叉树

七、树【DFS】

  1. 二叉树的反向层次遍历
  2. 最长同值路径
  3. 找到出现最多值的节点。【递归+Counter字典】

八、树总

  1. 树的深度
  2. 交换左右子树
  3. 求树的每层平均值
  4. 判断两颗树是否相同(递归)
  5. 输出树的所有路径:(前序遍历,深度遍历的特例)
  6. 二叉树的层次遍历:(BFS)
  7. 将有序数组转换为二叉搜索树(递归)
  8. 求树的坡度(递归,注意实例变量和静态变量的使用)
  9. 把二叉搜索树转换为累加树(递归,注意静态变量和实例变量的运用)
  10. 二叉树中的第二小的节点(BFS、DFS)
  11. 判断一棵树是否为高度平衡二叉树:(递归)
  12. 路径求和(两个递归求解):
  13. 路径总和(递归)【用列表的深拷贝】
  14. 二叉树剪枝(递归)
  15. 输出二叉树:【递归,重点在建立一个矩阵】
  16. 二叉树展开为链表【递归,重点在原地改动树的结构,需要额外的栈来存储树节点原本的值】
  17. 寻找重复的子树
  18. 验证二叉搜索树【递归,左子树所有节点都小于根节点,右子树所有节点都大于根节点,则返回正。】用两个循环或者两个递归
  19. 二叉树最大宽度【遍历整颗树,每个节点标记序号,每层最大节点减去最小节点的值+1----为结果】
  20. 建立所有不同的二叉搜索树【思想:遍历+递归,用生成器实现】
  21. 所有可能的完整二叉树【遍历+递归】
  22. 二叉搜索树-----依次输出最小值【迭代器】
  23. 二叉树增加一行【BFS实现】
  24. 二叉树最近公共祖先

 九、二叉搜索树:

  1. 二叉搜索树的后序遍历序列
原文地址:https://www.cnblogs.com/Lee-yl/p/10480109.html