-
数据结构:2-3树、B树、B+树、B*树
多路查找树 muitl-way search tree 在二叉树中,每个节点最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多路查找树,
-
算法:二叉树的层序遍历
要求 例如:以下二叉树按4 2 7 1 3 6 9顺序输出,一层一层输出。 4 / \ 2 7 / \ / \ 1 3
2021-02-21, Views: 1699 , Topics: 算法
-
数据结构:简化平衡二叉树旋转时节点交换的操作
说明 之前文章二叉树左旋、右旋、双旋时替换是new一个临时节点,使用根节点指向不变替换值的方式完成。可参见:https://www.zhangbj.com/p/
2021-02-20, Views: 1902 , Topics: 数据结构
-
数据结构:平衡二叉树的左旋、右旋和双旋
左旋 步骤 以当前节点的值,创建新的节点。 把新的节点的左子节点设置为当前节点的左子节点。 把新的节点的右子节点设置为当前节点的右子节点的左子节点。 把当前节
2021-02-19, Views: 2962 , Topics: 数据结构
-
算法:计算二叉树的高度
Java 实现 public class TreeHeight { public static void main(String[] args) {
2021-02-17, Views: 2365 , Topics: 算法
-
数据结构:平衡二叉树
别称 平衡二叉搜索树:Self-balancing binary search tree。 AVL树:得名于它的发明者G. M. Adelson-Velsky和
2021-02-16, Views: 1646 , Topics: 数据结构
-
算法:二叉排序树的添加、查找和删除
定义节点和二叉排序树 type BinarySortTree struct { root *Node } type Node struct {
2021-02-15, Views: 1770 , Topics: 算法
-
算法:使用深度优先搜索对二叉树遍历、查找和删除
说明 深度优先搜索使用递归实现二叉树的前序,中序和后序遍历、查找和删除。 前序遍历 先输出父节点,再遍历左子树和右子树。 中序遍历 先遍历左子树,再输出父节点,
2021-02-14, Views: 2088 , Topics: 算法
-
数据结构:满二叉树和完全二叉树
满二叉树 如图:所有叶子节点都在最后一层,并且节点总数为2^n-1。n为层数。 完全二叉树 如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一
2021-02-13, Views: 3137 , Topics: 数据结构
-
数据结构:树的常用术语
示意图 常用语 节点/节点对象(一个个小圆圈) 根节点/root节点 父节点 子节点 叶子节点 节点的权(节点的值) 路径:从ro
2021-02-11, Views: 2228 , Topics: 数据结构
-
数据结构:哈希表
定义 数组+链表:数组中的每个元素对应一个链表,加入元素时根据hash算法获得对应的数组索引,再插入到该索引对应的元素,即链表的末尾。 代码 func main
2021-02-11, Views: 2312 , Topics: 数据结构
-
算法:二分查找
循环法 func main() { arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9} fmt.
2021-02-10, Views: 1918 , Topics: 算法
-
算法:快速排序
算法演进 以数组中间索引的元素为中轴值,分组左右两边两个数组。 左边数组遍历找到一个大于中轴值的数,右边数组遍历找到一个小于中轴值的数,进行交换,遍历完成,左边
2021-02-09, Views: 1948 , Topics: 算法
-
算法:希尔排序
算法演进 首次按数组的长度除以2为分组步长,若步长大于1,则再次分组,以首次得到的步长再除以2为步长,以此类推分组,直至步长为1。 以[8, 9, 1, 7,
2021-02-08, Views: 1395 , Topics: 算法
-
算法:插入排序
算法:插入排序 算法演进 将数组看作两个数组,前一部分为有序数组(已排好序),后一部分为无序数组(待排序)。 以[10, 20, 5, 0]数组为例。 [10
2021-02-07, Views: 1329 , Topics: 算法
-
算法:选择排序
算法演进 假定第0位索引对应元素值最小。 第一次循环从第1位索引开始,与第0位索引对应的元素对比,如果第1位索引对应的元素比第0位索引对应的元素小,交换元素对
2021-02-05, Views: 1439 , Topics: 算法
-
算法:冒泡排序
算法演进 第一次从数组第0位索引开始遍历到数组最后一位将最大值置换至最后一位。 第二次从数组第0位索引开始遍历到数组最后第二位将最大值置换至最后第二位。 第三
2021-02-04, Views: 1392 , Topics: 算法
-
排序算法
内部排序 需要将所有数据都加入到内存中。 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 归并排序
2021-02-03, Views: 1485 , Topics: 算法
-
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度 算法的时间复杂度 计算程序执行时间 事后统计:打印程序的耗时时间,依赖于计算机硬件等因素,需在同一台计算机相同状态运行程序才准确。
2021-02-02, Views: 1303 , Topics: 算法
-
算法:递归-八皇后问题
说明 一维数组即可表示。 数组的索引i表示第i+1行皇后。即:索引从0开始,表示第1行。 元素的值arr[i]=value,value表示第value+1列。若
2021-02-01, Views: 1943 , Topics: 算法