数据结构
文章平均质量分 82
编程、小哥哥
七年 IT工程师一名 现目前在基金投研公司担任java 大数据开发工程师 天天不是在写软件就是在写bug的路上。
展开
-
树形数据结构-二分搜索树Binary Search Tree
B:如果当前树是有树根的,则对插入元素与当前树进行一个节点遍历操作,找到元素可以插入的索引位置 parent(挂到这个父节点下)。值查找的过程,就是对二叉搜索树的遍历,不断的循环节点,按照节点值的左右匹配,找出最终相当的值节点。最后是进行节点72与待删节点64的交换过程,更换三角关系,父节点、左子节点、右子节点。2:若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;待删除节点14,判断此节点的父节点的孩子节点,哪个等于14,找出左右。把待删节点的右孩子节点,挂到删除节点的右节点。原创 2024-05-04 14:20:25 · 566 阅读 · 0 评论 -
线性数据结构-手写队列-哈希(散列)Hash
通过我们使用数组存放元素,都是按照顺序存放的,当需要获取某个元素的时候,则需要对数组进行遍历,获取到指定的值。这就引入了哈希散列表的设计。除了对哈希桶上碰撞的索引元素进行拉链存放,还有不引入新的额外的数据结构,只是在哈希桶上存放碰撞元素的方式。这也就是使用哈希散列必须解决的一个问题,无论是在已知元素数量的情况下,通过扩容数组长度解决,还是把碰撞的元素通过链表存放,都是可以的。开放寻址的设计会对碰撞的元素,寻找哈希桶上新的位置,这个位置从当前碰撞位置开始向后寻找,直到找到空的位置存放。原创 2024-05-04 13:33:12 · 1014 阅读 · 0 评论 -
线性数据结构-手写队列-Queue
将元素添加到队列后的操作称为入队,从队列中移除元素的操作称为出队。但剩余接下里的步骤才是复杂的,因为需要在根元素迁移走后,寻找另外的最小元素迁移到对头。延迟队列的实现,主要为在优先队列的基础上,添加可重入锁 ReentrantLock 对阻塞队列的实现。首先将元素2挂到队列尾部,之后通过 (k - 1) >>> 1 计算父节点位置,与对应元素进行比对和判断交换。在存放元素时,以遵循它的特点,会在存存放过程中,通过队尾元素向上比对迁移。1:单端队列和双端队列,分别对应的实现类是哪个?原创 2024-05-03 00:44:47 · 935 阅读 · 0 评论 -
线性数据结构-手写链表-LinkList
在列表的最后一个节点中,链接字段通常包含一个空引用,一个特殊的值用于指示缺少进一步的节点。在“双向链表”中,除了下一个节点链接之外,每个节点还包含指向序列中“前一个”节点的第二个链接字段。之后创建一个新的节点,新的节点构造函数的头节点入参为null,通过这样的方式构建出一个新的头节点。尾差节点与头插节点正好相反,通过记录当前的结尾节点,创建新的节点,并把当前的结尾节点,通过 l.next 关联到新创建的节点上。链表的数据结构核心根基就在于节点对象的使用,并在节点对象中关联当前节点的上一个和下一个节点。原创 2024-05-02 23:43:40 · 716 阅读 · 0 评论