Algorithm:【算法进阶之路】之算法面试刷题集合—树结构算法的简介(二叉树/多路查找树/字典树)、具体结构(FBT/CBT/BST/BBT/Heap/Huffman、B树/B+树/R树、字典树)及其运算(增删查/遍历/旋转)、代码实现之详细攻略
目录
(0)、图文案例理解——满二叉树FBT、完全二叉树CBT、二叉树查找树BST、平衡二叉查找树BBT
(4.4)、BBT旋转—高度不平衡节点四种分类(左左/左右/右左/右右)、左左单旋转、左右双旋转图文分析
0、定义二叉树及节点并利用networkx库实现树结构可视化:定义二叉树节点类→基于TreeNode类构建一个二叉树→利用networkx库实现树结构可视化
(1)、判断是不是平衡二叉树BBT:意义(保证查找时间为O(log n))
(2)、判断是不是完全二叉树:意义(层次遍历/树的序列化/堆数据结构)
(3)、判断是不是二叉搜索树BST:意义(验证数据库索引的正确性/验证排序算法的正确性)
T2、Python编程实现:采用迭代法+用栈来模拟递归过程实现
(1)、二叉树的前序遍历:定义二叉树节点类+前序遍历函数+主函数实现
2.2、求二叉树的层序遍历:意义(可视化二叉树结构/搜索算法记录节点/处理具有层级关系的数据)
(1)、二叉树的锯齿形层序遍历:使用队列来进行层序遍历,同时使用一个标志位来控制遍历的顺序
(2)、代码对比:求二叉树的层序遍历、按之字形顺序打印二叉树
2.4、通过前序中序求后序:已知二叉树的前序遍历、中序遍历→求其后序遍历
(2)、求二叉树中和为某一值的路径:意义(地理最短路径/推荐组合商品/理解决策树推理过程)
(3)、求二叉树中两个节点的最近公共祖先:意义(亲缘关系计算/文件权限管理/版本控制合并两个分支)
(5)、基于前序遍历和中序遍历求重建二叉树:意义(数据恢复/)
2、平衡二叉树BBT单旋转、双旋转、BBT的插入、BBT的删除