随笔
树
二叉树
前、中、后序的递归、非递归遍历
层序遍历
完全二叉树CBT:Complete Binary Tree
通常使用数组而非链表存储。
大根堆、小根堆
基于CBT
创建(构造):从最后一个非叶子结点向前构造。
满二叉树
基于CBT
二叉查找/搜索/排序树BST:Binary Search Tree
尾递归/迭代查找、查找Min、查找Max
插入:递归查找+插入
创建:多次插入
删除:仍满足中序遍历的有序性,递归查找+分三种情况删除(直接前驱/直接后继)
平衡二叉树(AVL树)
插入:LL右旋,RR左旋,LR左旋右旋,RL右旋左旋
删除:删除的节点在左/右子树,被破坏节点的右/左节点的左右高度比较
排序
快速排序
分治、递归,选取pivot元素,将序列分为小于、大于pivot的两部分,pivot位于中间。
堆排序(用数组存储)
将初始数组构造成大/小根堆,分为无序、有序两部分,每次取无序的首元素(大/小根)到有序中,再调整无序为新的大/小根堆。
插入排序(用数组、链表存储)
分为有序、无序两部分,每次从无序中取一个元素,插入到有序中的合适位置。
桶排序
将元素通过高效定位,放到不同的桶中,对每个桶进行普通排序,再按照次序将所有元素合并。
冒泡排序
浙公网安备 33010602011771号