![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Java数据结构的代码实现
可乐yue
愿你熬得过万丈孤独,藏得下星辰大海
展开
-
KMP字符串匹配算法
介绍 百度百科 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。 实现 实...原创 2020-03-11 23:14:45 · 404 阅读 · 0 评论 -
单链表增删改查
单链表节点类链表类插入到最后按顺序插入(完成后,链表有序)更新节点删除节点单链表反转 节点类 class Node{ public int id; public String name; public Node next; //指向下一个节点 public Node() { } public Node(int id, String name...原创 2020-03-08 14:53:42 · 540 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历
二叉树BinaryTree类(调用节点类的方法)Node类(节点类,遍历细节)Main类测试遍历代码 BinaryTree类(调用节点类的方法) class BinaryTree{ private Node root; //表示根节点 public BinaryTree(Node root) { this.root = root; } //前序...原创 2020-03-08 01:37:25 · 332 阅读 · 0 评论 -
【牛客网练习】二叉树平衡检查
参考:学习自该大佬 题目 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。 给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。 分析 1.求出左子树与右子树的高度差,大于1则false 2.如何求? 递归求出,如果节点为空那么则深度为0,这同时也是递归出口,若不为空则递归左子树与右子树。 注意:最终二叉...转载 2019-12-01 22:00:13 · 170 阅读 · 2 评论 -
两个栈实现队列
实现一个队列 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void...原创 2019-11-23 19:42:13 · 114 阅读 · 0 评论 -
优先级队列(堆)
实现一个优先级队列 内部方法: (1)建大(小)堆 (2)调整堆 (3)入队列 (4)出队列 package test_9_22; public class MyPriorityQueue { private int[] array; private int size; public MyPriorityQueue() { array = new int...原创 2019-11-23 19:17:16 · 127 阅读 · 0 评论 -
二叉树的建立,遍历
建立二叉树的两种方式 (1)根据前序遍历数组和后序遍历数组建立 (2)根据中序遍历数组和后序遍历数组建立 遍历这里实现了后序遍历,中序和前序只是list.add的位置发生了改变(这里是递归实现) import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Node { int va...原创 2019-11-23 18:49:46 · 133 阅读 · 0 评论 -
实现简单的栈
利用LinkedList实现一个简单的栈 import java.util.LinkedList; import java.util.Queue; public class MyStack { private Queue<Integer> que = new LinkedList<>(); /** Initialize your data structur...原创 2019-11-23 18:27:11 · 197 阅读 · 0 评论