二叉排序树 BST(Binary Sort Tree)
二叉排序树 二叉排序树是一颗空树或者具有以下性质二叉树 若它的左子树不为空,则左子树上所有结点的值均小于它根结点的值 若它的右子树不为空,则右子树上所欲结点的值均大于它根结点的值 它的左右子树分别为二叉排序树 实现 package com.learn.bst; public class BinarySortTreeDemo { public static ...
二叉排序树 二叉排序树是一颗空树或者具有以下性质二叉树 若它的左子树不为空,则左子树上所有结点的值均小于它根结点的值 若它的右子树不为空,则右子树上所欲结点的值均大于它根结点的值 它的左右子树分别为二叉排序树 实现 package com.learn.bst; public class BinarySortTreeDemo { public static ...
赫夫曼树 树的带权路径长度:树的带权路径长度规定为所有的叶子节点的带权路径长度之和(wpl 的和),wpl 最小的树就是赫夫曼树 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径达到最小(wpl),这样的二叉树称为最优二叉树。 赫夫曼树是带权路径最短的树,权越大离根结点距离越近 构建赫夫曼树 构建赫夫曼树的思路 从小到大进行排序,每个数据看成一个节点,每个...
树与数组链表的比较 数组存储方式的分析 优点:通过下标访问元素,速度快。对于有序数组,还可以使用二分查找提高检索速度 缺点: 如果要检索具体某个值,或者插入值,会整体移动,效率低 链式存储方式的分析 优点:插入,删除效率较高 缺点:检索效率低 树存储方式分析 提高数据存储,读取的效率,比如利用二叉排序树,即保证了数据查询的效率,也保证了数据修改,插入,删除...
树与数组链表的比较 数组存储方式的分析 优点:通过下标访问元素,速度快。对于有序数组,还可以使用二分查找提高检索速度 缺点: 如果要检索具体某个值,或者插入值,会整体移动,效率低 链式存储方式的分析 优点:插入,删除效率较高 缺点:检索效率低 树存储方式分析 提高数据存储,读取的效率,比如利用二叉排序树,即保证了数据查询的效率,也保证了数据修改,插入,删除...
哈希表 根据关键码值(key value)而直接进行访问的数据结构 它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度, 这个映射函数叫做散列函数,存放记录的数组叫做散列表。 常见的哈希表结构 数组+链表 数组+二叉树 哈希表可以同时管理多条链表 package com.learn.hash; import java.util.Scanner; public cla...
排序 1.内部排序 将需要处理的所有数据都加载到内部存储器中进行排序 2.外部排序法 数据量过大,无法全部加载到内存 内部排序 插入排序 直接插入排序 希尔排序 选择排序 简单排序 堆排序 交换排序 冒泡排序 快速排序 ...
递归 -自己调用自己的函数 使用场景 8 皇后,汉诺塔,阶乘,迷宫 快排,归并,二分,分治 使用栈解决的问题->递归代码比较简洁 使用递归需要遵守的问题 执行一个方法时,就创建一个新的受保护的独立空间(栈空间) 方法的局部变量是独立的,不会相互影响 每个递归定义至少必须有一个条件,满足时递归不再进行,而是返回值退出 遵守谁调用,就将结果返回谁,...
栈 先入后出的有序列表 (FILO-First In Last Out) 栈是限制线性表中元素的插入和删除 只能在线性表一段进行的特殊线性表,允许插入和删除的一端称为栈顶,另一端为栈底 最先放入栈中元素在栈底,最后放入的元素在栈顶,删除则是最后放入的先删除,最先放入的最后删除。 栈涉及到的应用场景 子程序调用:在跳往子程序前,会先将下个指令的地址存放到堆栈中,子程...
链表 链表是以节点方式存储 每个节点包含 data,next 域指向下一个节点 链表的各个节点不一定是连续存储 链表根据需求,可以带头结点也可以不带 尾部插入 package com.learn.linkedlist; public class SingleLinkedListDemo { public static void main(Strin...
参考资料:https://space.bilibili.com/302417610?spm_id_from=333.788.b_765f7570696e666f.2 线性结构与非线性结构 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构 顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连...