摘要:
1.删除的规定(剩下的后面补充) 如果删除的是叶子结点,则删除该结点; 如果删除的结点是非叶子结点,则删除该子树 2.删除思路 首先,考虑如果树是空树root,或者只有一个结点,则等价于二叉树置空。 因为我们的二叉树是单向的,所以我们是判断当前结点的子结点是否需要删除,而不能去判断当前这个结点是不是 阅读全文
摘要:
1.前序查找思路 先判断当前结点的no是否等于要查找的no 如果no相等,则返回该结点 如果no不相等,则判断当前结点的左子结点是否为空,如果不为空,则递归前序查找 如果左递归前序查找到结点,则返回 否则继续判断,当前结点的右子结点是否为空,如果不为空,则继续递归前序查找 2.中序查找思路 判断当前 阅读全文
摘要:
1.说明 前序遍历: 先输出父节点,再遍历左子树和右子树 中序遍历: 先遍历左子树,再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 小结: 看输出父节点的顺序,就确定是前序,中序还是后序 2.分析遍历的步骤 1.先创建一棵二叉树 2.前序遍历 2.1 先输出当前结 阅读全文
摘要:
1.哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 哈希表与缓存层联系学习,有助于理解。 2.图 阅读全文
摘要:
1.斐波那契(黄金分割法)查找基本介绍 黄金分割点是指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此称为黄金分割,也称为中外比。这是一个神奇的数字,会带来意向不到的效果。 斐波那契数列 {1,1, 2, 阅读全文
摘要:
1.插值查找原理介绍 1)插值查找算法类似于二分查找,不同的是插值查找每次从自适应mid处开始查找。 2)将折半查找中的求mid 索引的公式, low表示左边索引left,high表示右边索引right.key 就是前面我们讲的 findVal。 2.插值查找举例(自适应很神奇)(查找一次即可) 插 阅读全文
摘要:
1.二分查找算法介绍 二分查找算法必须是有序的。 二分查找的思路分析 首先确定该数组的中间的下标 mid = (left + right) / 2 然后让需要查找的数 findVal 和 arr[mid] 比较 1 findVal > arr[mid] , 说明你要查找的数在mid 的右边, 因此需 阅读全文
摘要:
1.常用查找算法 1)顺序(线性)查找 二分查找/折半查找 3)插值查找 斐波那契查找 2.线性查找算法实现 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求:如果找到了,就提示找到,并给出下标值。 package com.yt.sear 阅读全文
摘要:
1.基数排序介绍(桶排序) 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用. 基数排序法是属于稳定性的排序 2. 阅读全文
摘要:
1.归并排序介绍 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法; 该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而 治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 2.归 阅读全文