Java语言里的紧凑模式数组和普通数组有什么区别?紧凑二叉树和紧凑编码二叉树两者的关系是什么?有点一模糊的?
记住如有是面试问这个问题, 回答总结的内容, 如果面试官深入的问在给他细说
紧凑模式数组和普通数组之间的差异
第一点 : 普通数组是一维的连续存储结构,其中元素按照索引进行访问。而紧凑模式数组则是通过某种方法将多维数组压缩为一维数组进行存储。总结就是,存储方式差异
第二点:由于紧凑模式数组将多维数组转换为一维数组存储,因此可以减少内存空间的占用。相比之下,普通数组需要额外的内存来存储维度信息。总结就是,内存占用的差异
第三点:普通数组的元素访问通过索引直接定位,访问效率较高。而紧凑模式数组需要通过计算和映射等操作来实现对多维数组的访问,可能会导致一些额外的开销,降低了访问效率。总结就是:访问效率的差异
紧凑二叉树和紧凑编码二叉树之间的关系
一. 紧凑二叉树是指在二叉树中,节点的左子树或右子树为空时,通过某种方式将其空链接用叶子节点的地址进行表示,从而减少存储空间的浪费。与普通的二叉树相比,紧凑二叉树可以更高效地存储和操作。
二. 紧凑编码二叉树是使用紧凑二叉树来实现的一种特殊的二叉树,用于进行编码和压缩。在紧凑编码二叉树中,叶子节点存储的是字符或符号,而非叶子节点存储的是合并字符频率的信息。通过遍历紧凑编码二叉树,可以生成字符的编码表,进而实现对数据的压缩和解压缩。
总结起来就是: 紧凑编码二叉树是基于紧凑二叉树的一种特殊应用,用于实现数据的压缩编码。紧凑模式数组则是对多维数组进行优化的一种存储方式,与二叉树和编码压缩没有直接的关系。