数据结构
阎八一
这个作者很懒,什么都没留下…
展开
-
【Java力扣算法】LeetCode 208 实现 Trie (前缀树)
题目:实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith...原创 2019-05-21 17:17:53 · 254 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结02(前、中、后序遍历,层序遍历)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树1、前序遍历...原创 2019-07-07 16:12:04 · 817 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结01(插入,删除操作)
BST树(binary search tree)定义:二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;(3)左、右子树也分别为二叉搜索树;(4)没有值相等的节点。二叉树每层节点个数为2^n ,树高为log2n...原创 2019-07-07 15:31:10 · 1375 阅读 · 1 评论 -
【Java数据结构】AVL树(平衡二叉树)总结(增加,删除操作,四种旋转)
AVL树本质上还是一棵二叉搜索树,AVL = BST + 平衡操作所以它的特点是: 1.本身首先是一棵二叉搜索树。 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。 3.树中的每个左子树和右子树都是AVL树也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树)。为何引入AVL: ...原创 2019-07-15 13:59:46 · 662 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结08(判断是否是子树)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树判断是否是子...原创 2019-07-15 09:12:47 · 200 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结09(按层打印二叉树)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树二叉树的按层...原创 2019-07-15 09:16:40 · 334 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结07(把BST树满足[begin,end]区间的值打印出来,放在集合中)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树把BST树满...原创 2019-07-15 08:40:11 · 271 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结06(求BST树的镜像)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树BST树的镜像...原创 2019-07-15 08:26:47 · 165 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结05(判断二叉树是否是BST树,AVL树)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树1、判断是否...原创 2019-07-07 20:54:03 · 616 阅读 · 1 评论 -
【Java数据结构】BST树(二叉搜索树)总结04(返回中序遍历 第k个节点的值)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树返回中序遍历...原创 2019-07-07 20:32:51 · 865 阅读 · 0 评论 -
【Java数据结构】BST树(二叉搜索树)总结03(求BST树高度,求BST树节点个数)
二叉树总结:入口二叉树的基本操作:1、插入,删除 操作2、前、中、后序遍历,层序遍历3、求BST树高度,求BST树节点个数4、返回中序遍历第k个节点的值5、判断一个二叉树是否是BST树,判断一个BST树是否是AVl树6、BST树的镜像7、把BST树满足[begin,end]区间的值放在集合中、打印出来8、判断是否是子树9、按层打印二叉树1、求BST...原创 2019-07-07 20:01:49 · 2099 阅读 · 0 评论 -
【Java数据结构】判断单链表是否有环,并且找出环的入口
一:判断是否有环 思路:使用快慢引用法解决 是否有环 假设链表是一个有环链表,且由f指向c构成环。那么 使用两个指针 A 和 B,让两指针同时向后遍历 而且B的遍历速度是A的两倍,呢么如果是有环的话,B终究会追上A。因此我们可以 以AB是否相遇作为判断是否有环的必要条件。 下面是图...原创 2019-05-29 20:39:59 · 3743 阅读 · 3 评论 -
【Java数据结构】输出单链表中倒数第k个
思路: 如图所示:这个题的灵魂就是求出 length-k,求出length-k 就相当于知道了倒数k的值。先遍历k长度,到达a点,剩下的长度就是 length-k。然后同时遍历 m, n 两个链表,那么m遍历结束的时候,n链表刚好到达b点 即倒数k的位置。代码:public Entry<E> getKOfLink(int k...原创 2019-05-28 21:24:11 · 541 阅读 · 0 评论 -
【Java数据结构】如果两个单链表相交,输出相交节点
思路:寻找同一起跑线,再找节点 让 两个链表先处于同一起跑线,如图所示,然后再 同时向后遍历(从d和h开始同时向后遍历),那么就可以确定是在哪个地方相交的了(确定了在f处相同,即交点)。那么如何让他俩处于同一起跑线呢?很简单,只需要长的链表先走 走到与短的链表一样长就可以了。所以解法:1,分别计算两个链表的长度,得出差值(长的为7,短的为4,差值3) ...原创 2019-05-28 20:52:23 · 1278 阅读 · 0 评论 -
【Java大话数据结构01】数据结构概念,绪论
1、概念 数据:数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机(计算机中的程序)处理的符号集合。 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。称为记录。 数据项:一个数据元素可以有若干个数据项组成。数据项是不可分...原创 2019-05-23 10:41:44 · 205 阅读 · 0 评论 -
【Java数据结构】不带头单向循环链表
public class SingleLink<T> { private static class Entry<E>{ private Entry<E> next; private E value; public Entry(E value){ this.value = va...原创 2019-05-25 16:09:48 · 327 阅读 · 0 评论 -
【Java数据结构】无头结点双向循环链表
public class CircleList<E> { private class Node<T> { private T value; private Node<T> prev; private Node<T> next; public Node(T value){...原创 2019-05-25 16:07:51 · 289 阅读 · 0 评论 -
【Java数据结构】无头结点单链表
public class NhLinkedList<E> { private class Entry<T> { private T value; private Entry<T> next; public Entry(){ } public Entry(T val...原创 2019-05-25 16:06:25 · 528 阅读 · 0 评论 -
【Java数据结构】逆置单链表,四种解法
原理:从原来的链表把第一个节点一个一个逮出来,然后头插到新链表中class ListNode{ int data; ListNode next;}public class Link{ public static ListNode ReverseLink(ListNode first){ ListNode cur = first; //原...原创 2019-08-03 17:25:58 · 2082 阅读 · 0 评论