├── .classpath ├── .gitignore ├── .project ├── .settings └── org.eclipse.jdt.core.prefs ├── README.md └── src └── cn └── edu └── tju └── rico ├── BinarySearchTree ├── BinarySearchTree.java └── TreeNode.java ├── backtrack └── EightQueen.java ├── heap └── MinHeap.java ├── list ├── LinkedList.java └── Node.java ├── queue ├── LinkedQueue.java ├── Node.java ├── OptimizationStackQueue.java ├── SeqQueue.java └── StackQueue.java ├── sort ├── BinaryInsertSort.java ├── BubbleSort.java ├── HeapSort.java ├── MergeSort.java ├── QuickSort.java ├── QuickSort_PartitionOnly.java ├── RadixSort.java ├── ShellSort.java ├── StraightInsertionSort.java └── StraightSelectSort.java ├── stack ├── LinkedListStack.java ├── LinkedStack.java ├── Node.java └── SeqStack.java ├── test ├── BinarySearchTreeTest.java ├── BinaryTreeTest.java ├── LinkedListTest.java ├── LinkedQueueTest.java ├── LinkedStackTest.java ├── MinHeapTest.java ├── OptimizationStackQueueTest.java ├── SeqQueueTest.java ├── SortTest.java └── StackQueueTest.java └── tree ├── BinaryTree.java └── Node.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | DataStructure 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.7 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.7 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # 常用数据结构及其算法的Java实现 3 | 4 | 本项目主要使用Java实现各种经典常用数据结构及其算法,包括但不仅限于链表、栈,队列,树,图等经典数据结构,持续更新中... 5 | 6 | 目前,该项目具体包括如下内容: 7 | 8 | - 单向链表的数据结构及其相关算法:单向链表结构包含两个要素,即头结点head和链表大小size,具体操作包括: 9 | 10 | - 链表的增删 11 | - 链表是否为空 12 | - 链表的大小 13 | - 链表的打印输出 14 | - 删除链表重复节点 15 | - 链表倒数第K个元素 16 | - 链表的反转 17 | - 链表的倒序输出 18 | - 链表的中间节点 19 | - 链表是否有环 20 | - 链表节点的删除(不知道头结点的情况下) 21 | - 链表是否相交 22 | - 链表的交点 23 | 24 | --------------- 25 | 26 | - 栈(顺序栈/链式栈)的数据结构及其相关算法:栈结构包含两个要素,即栈顶指针top和栈大小size,具体操作包括: 27 | 28 | - 压栈操作push 29 | - 弹栈操作pop 30 | - 查看栈顶元素peek 31 | - 查看栈的大小 32 | - 查看栈是否为空 33 | - 查看栈的最小元素(O(1)时间复杂度) 34 | 35 | --------------- 36 | 37 | - 队列(基于数组的实现、基于链表的实现和基于栈的实现)的数据结构及其相关算法:队列结构包含三个要素,即队头指针head、队尾指针rear和队列大小size,具体操作包括: 38 | 39 | - 入队操作put 40 | - 出队操作pop 41 | - 查看队头元素peek 42 | - 查看队列的大小 43 | - 查看队列是否为空 44 | 45 | ---------- 46 | 47 | - 二叉树(链式实现)的数据结构及其相关算法:二叉树结构包含一个要素,即二叉树的根结点,具体操作包括: 48 | 49 | - 以广义表形式的字符串构建二叉树:'()'前表示根结点,括号中左右子树用逗号隔开,逗号不能省略 50 | - 二叉树的层次/广序遍历算法(辅助队列) 51 | - 二叉树的前序、中序、后序遍历的递归/非递归算法(辅助栈):对每个节点而言,三种遍历方式都需要遍历该结点三次,三者唯一区别在于该结点的访问时机;特别注意后序遍历的迭代算法的实现 52 | - 根据二叉树的前序、中序或中序、后序遍历结果构建二叉树 53 | - 根据二叉树的根结点复制一颗二叉树 54 | - 二叉树的高度 55 | - 二叉树的结点总数 56 | - 二叉树的根结点、孩子节点的获取 57 | - 以广义表的形式打印二叉树 58 | - 判断两颗二叉树是否相等 59 | 60 | ---------- 61 | 62 | - 堆(数组实现)的数据结构及其相关算法:堆结构实际上是一个完全二叉树,能方便地从中取出最小/大元素,其包含两个要素,即存储数组heap[]和堆大小size。本实现为最小堆,具体操作包括: 63 | 64 | - 堆的构建(创建一个空堆,基于数组的构建) 65 | - 堆的插入(插入到堆尾,再自下向上调整为最小堆) 66 | - 堆的删除(删除堆顶元素并用堆尾元素添补,再自上向下调整为最小堆) 67 | - 堆排序(时间复杂度:O(nlgn),空间复杂度O(1),不稳定):升序排序一般用最大堆,不断地将堆顶元素放到数组最后并缩小堆的范围 68 | - 堆的打印(树的前序遍历的应用) 69 | 70 | ---------- 71 | 72 | - 二叉搜索树的数据结构及其相关算法:二叉搜索树也叫二叉排序树,其中序遍历及时序列的升序排序。此外,二叉搜索树能方便地从中搜索出指定元素,具体操作包括: 73 | 74 | - 二叉搜索树的构建(基于数组的构建(插入构建)) 75 | - 二叉搜索树的插入(插入到合适位置,插入后仍然是一颗二叉搜索树),递归算法 76 | - 二叉搜索树的删除(分为删除节点为叶子节点、左子树为空、右子树为空、左右子树均不为空等四个方面,递归算法,删除后仍然是一颗二叉搜索树) 77 | - 二叉搜索树的搜索,O(lgn),递归算法 78 | - 二叉搜索树的遍历,特别是中序遍历(遍历结果为升序序列),递归算法 79 | - 二叉搜索树的打印(树的前序遍历的应用),递归算法 80 | 81 | ---------- 82 | 83 | - 八大排序算法及其实现,具体包括直接插入排序,希尔排序,直接选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序在内的八种排序算法,同时对各种算法的基本特征做出了详细分析: 84 | 85 | - 算法基本思想 86 |    - 算法的种类:插入排序(直接插入排序,希尔排序,折半插入排序),选择排序(直接选择排序,堆排序(升序/最大堆)),交换排序(冒泡排序,快速排序),归并排序,分配排序(基数排序) 87 | - 算法的时间复杂度 88 | - 算法的空间复杂度 89 | - 算法的稳定性 90 | - 内部排序/外部排序 91 | 92 | ---------- 93 | 94 | 注意: 95 | 96 | - 堆排序的源码在堆的相关实现中给出 97 | - 源码中每个包对应一个数据结构及其算法的实现。若项目中的源代码存在谬误,请不吝指出,在此拜谢! 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/BinarySearchTree/BinarySearchTree.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/BinarySearchTree/BinarySearchTree.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/BinarySearchTree/TreeNode.java: -------------------------------------------------------------------------------- 1 | 2 | package cn.edu.tju.rico.BinarySearchTree; 3 | 4 | public class TreeNode { 5 | 6 | public int data; 7 | public TreeNode left; 8 | public TreeNode right; 9 | 10 | public TreeNode(int data){ 11 | this.data = data; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return "TreeNode [data=" + data + "]"; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/backtrack/EightQueen.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/backtrack/EightQueen.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/heap/MinHeap.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/heap/MinHeap.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/list/LinkedList.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/list/LinkedList.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/list/Node.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/list/Node.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/queue/LinkedQueue.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/queue/LinkedQueue.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/queue/Node.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/queue/Node.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/queue/OptimizationStackQueue.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/queue/OptimizationStackQueue.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/queue/SeqQueue.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/queue/SeqQueue.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/queue/StackQueue.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/queue/StackQueue.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/BinaryInsertSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/BinaryInsertSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/BubbleSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/BubbleSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/HeapSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/HeapSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/MergeSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/MergeSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/QuickSort.java: -------------------------------------------------------------------------------- 1 | package cn.edu.tju.rico.sort; 2 | 3 | import java.util.Arrays; 4 | 5 | /** 6 | * Title: 交换排序中的快速排序,目前应用最为广泛的排序算法,是一个递归算法 7 | * Description:快速排序包括两个过程:划分 和 快排 8 | * "划分"是指将原序列按基准元素划分两个子序列 9 | * "快排"是指分别对子序列进行快排 10 | * 11 | * 就平均计算时间而言,快速排序是所有内部排序方法中最好的一个 12 | * 13 | * 对大规模数据排序时,快排是快的;对小规模数据排序时,快排是慢的,甚至慢于简单选择排序等简单排序方法 14 | * 15 | * 快速排序依赖于原始序列,因此其时间复杂度从O(nlgn)到O(n^2)不等 16 | * 时间复杂度:最好情形O(nlgn),平均情形O(nlgn),最差情形O(n^2) 17 | * 18 | * 递归所消耗的栈空间 19 | * 空间复杂度:O(lgn) 20 | * 21 | * 可选任一元素作为基准元素 22 | * 稳 定 性:不稳定 23 | * 24 | * 25 | * 内部排序(在排序过程中数据元素完全在内存) 26 | * 27 | * @author rico 28 | * @created 2017年5月20日 上午10:40:00 29 | */ 30 | public class QuickSort { 31 | 32 | /** 33 | * @description 快排算法(递归算法):在递去过程中就把问题解决了 34 | * @author rico 35 | * @created 2017年5月20日 下午5:12:06 36 | * @param target 37 | * @param left 38 | * @param right 39 | * @return 40 | */ 41 | public static int[] quickSort(int[] target, int left, int right) { 42 | if(right > left){ // 递归终止条件 43 | int base_index = partition(target,left, right); // 原序列划分后基准元素的位置 44 | quickSort(target, left, base_index-1); // 对第一个子序列快速排序,不包含基准元素! 45 | quickSort(target, base_index+1, right); // 对第二个子序列快速排序,不包含基准元素! 46 | } 47 | return target; 48 | } 49 | 50 | 51 | /** 52 | * @description 序列划分,以第一个元素为基准元素 53 | * @author rico 54 | * @created 2017年5月20日 下午5:10:54 55 | * @param target 序列 56 | * @param left 序列左端 57 | * @param right 序列右端 58 | * @return 59 | */ 60 | public static int partition(int[] target, int left, int right){ 61 | 62 | int base = target[left]; // 基准元素的值 63 | int base_index = left; // 基准元素最终应该在的位置 64 | 65 | for (int i = left+1; i <= right; i++) { // 从基准元素的下一个元素开始 66 | if(target[i] < base){ // 若其小于基准元素 67 | base_index++; // 若其小于基准元素,则基准元素最终位置后移;否则不用移动 68 | if(base_index != i){ // 相等情况意味着i之前的元素都小于base,只需要换一次即可,不需要次次都换 69 | int temp = target[base_index]; 70 | target[base_index] = target[i]; 71 | target[i] = temp; 72 | } 73 | } 74 | } 75 | 76 | // 将基准元素就位 77 | target[left] = target[base_index]; 78 | target[base_index] = base; 79 | 80 | System.out.println(Arrays.toString(target)); 81 | 82 | return base_index; //返回划分后基准元素的位置 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/QuickSort_PartitionOnly.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/QuickSort_PartitionOnly.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/RadixSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/RadixSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/ShellSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/ShellSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/StraightInsertionSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/StraightInsertionSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/sort/StraightSelectSort.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/sort/StraightSelectSort.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/stack/LinkedListStack.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/stack/LinkedListStack.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/stack/LinkedStack.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/stack/LinkedStack.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/stack/Node.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/stack/Node.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/stack/SeqStack.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/stack/SeqStack.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/BinarySearchTreeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/BinarySearchTreeTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/BinaryTreeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/BinaryTreeTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/LinkedListTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/LinkedListTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/LinkedQueueTest.java: -------------------------------------------------------------------------------- 1 | package cn.edu.tju.rico.test; 2 | 3 | import cn.edu.tju.rico.queue.LinkedQueue; 4 | 5 | public class LinkedQueueTest { 6 | public static void main(String[] args) { 7 | LinkedQueue queue = new LinkedQueue(); 8 | queue.put(1); 9 | queue.put(2); 10 | queue.put(4); 11 | queue.put(3); 12 | queue.put(0); 13 | System.out.println(queue); 14 | System.out.println("\n ------------------- \n"); 15 | 16 | 17 | queue.pop(); 18 | System.out.println(queue); 19 | System.out.println("\n ------------------- \n"); 20 | 21 | 22 | System.out.println(queue.peek()); 23 | queue.put(121); 24 | System.out.println(queue); 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/LinkedStackTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/LinkedStackTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/MinHeapTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/MinHeapTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/OptimizationStackQueueTest.java: -------------------------------------------------------------------------------- 1 | package cn.edu.tju.rico.test; 2 | 3 | import cn.edu.tju.rico.queue.OptimizationStackQueue; 4 | 5 | public class OptimizationStackQueueTest { 6 | public static void main(String[] args) { 7 | OptimizationStackQueue queue = new OptimizationStackQueue(); 8 | queue.put(1); 9 | queue.put(3); 10 | queue.put(5); 11 | queue.put(2); 12 | queue.put(8); 13 | queue.put(6); 14 | System.out.println(queue); 15 | System.out.println("\n------------------\n"); 16 | 17 | queue.pop(); 18 | System.out.println(queue); 19 | System.out.println("\n------------------\n"); 20 | 21 | queue.put(4); 22 | queue.put(5); 23 | System.out.println(queue); 24 | System.out.println("\n------------------\n"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/SeqQueueTest.java: -------------------------------------------------------------------------------- 1 | package cn.edu.tju.rico.test; 2 | 3 | import cn.edu.tju.rico.queue.SeqQueue; 4 | 5 | public class SeqQueueTest { 6 | 7 | public static void main(String[] args) { 8 | 9 | SeqQueue queue = new SeqQueue(5); 10 | queue.put(1); 11 | queue.put(2); 12 | queue.put(3); 13 | queue.put(4); 14 | queue.put(3); 15 | queue.put(4); 16 | System.out.println(queue); 17 | System.out.println("\n----------------\n"); 18 | 19 | queue.pop(); 20 | System.out.println(queue); 21 | System.out.println("\n----------------\n"); 22 | 23 | System.out.println(queue.peek()); 24 | System.out.println(queue); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/SortTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/test/SortTest.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/test/StackQueueTest.java: -------------------------------------------------------------------------------- 1 | package cn.edu.tju.rico.test; 2 | 3 | import cn.edu.tju.rico.queue.StackQueue; 4 | 5 | public class StackQueueTest { 6 | public static void main(String[] args) { 7 | StackQueue queue = new StackQueue(); 8 | queue.put(1); 9 | queue.put(3); 10 | queue.put(5); 11 | queue.put(2); 12 | queue.put(8); 13 | queue.put(6); 14 | System.out.println(queue); 15 | System.out.println("\n------------------\n"); 16 | 17 | queue.pop(); 18 | System.out.println(queue); 19 | System.out.println("\n------------------\n"); 20 | 21 | queue.put(4); 22 | System.out.println(queue); 23 | System.out.println("\n------------------\n"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/tree/BinaryTree.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/tree/BinaryTree.java -------------------------------------------------------------------------------- /src/cn/edu/tju/rico/tree/Node.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/githubofrico/DataStructure/9f6592b157fb6fa0983e0b1ed64b33b2d33711e5/src/cn/edu/tju/rico/tree/Node.java --------------------------------------------------------------------------------