![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据结构的自我理解及总结
回响。
这个作者很懒,什么都没留下…
展开
-
堆(优先队列)的实现(大根堆)
堆(优先队列)的实现(大根堆) public class MyHeap { //向下调整 //前提条件是要求被调整节点左右子树都已经是堆了 //从indexOfParent这个位置开始向下调整 //按照大根堆来实现 public static void shiftDown(int[] array,int heapSize,int indexOfParent){ int parent=indexOfParent; int child=pa原创 2021-05-30 12:30:12 · 499 阅读 · 0 评论 -
二叉树的遍历,非递归实现
二叉树的遍历,非递归实现 前序遍历 //入栈时先是右子树再是左子树,即保证出栈时先是左子树再是右子树 //由于用的是栈数据结构所以先进后出先压右再压左,出的时候先出左再出右 public static void preOrderNoR(TreeNode root){ if(root==null){ return; } Stack<TreeNode> stack=new Stack<>();原创 2021-05-27 14:42:00 · 59 阅读 · 0 评论 -
二叉树的遍历,递归实现
二叉树的遍历,递归实现 先序遍历 public static void preOrder(TreeNode root){ if(root==null){ return; } System.out.print(root.val); preOrder(root.left); preOrder(root.right); } 中序遍历 public static void inOrder(Tre原创 2021-05-27 14:28:40 · 48 阅读 · 0 评论 -
循环队列的实现,基于数组
循环队列的实现,基于数组 //循环队列 //数组实现 public class Queue { private int[] data =new int[100]; //有效区间[head,tail) private int head=0; private int tail=0; private int size=0; //1、入队 public boolean offer(int val){ if (size== data.lengt原创 2021-05-26 15:24:31 · 65 阅读 · 0 评论 -
队列的实现,基于链表
队列的实现,基于链表 //单向队列 //先进后出 //尾插头删 //用链表实现,顺序表也可以,但是在头部操作时代价太高 public class Queue { private class Node{ int val; Node next; public Node(int val){ this.val=val; } } private Node head=null; private Nod原创 2021-05-26 15:01:54 · 62 阅读 · 0 评论 -
栈的实现,通过链表实现
栈的实现,通过链表实现 class Node{ int val; Node next; public Node(int val){ this.val=val; } } public class Stack2 { private Node head=null; private int size=0; //1、入栈 public void push(int val){ Node newNode=new Node(va原创 2021-05-25 08:50:53 · 44 阅读 · 0 评论 -
栈的实现,通过数组存储
栈的实现,通过数组存储 public class Stack1 { //java底层是通过数组来实现 //初始大小为10,每次二倍扩容 private int[] data=new int[10]; private int size=0; //扩容,realloc private void realloc(){ //二倍扩容 int[] newData=new int[data.length*2]; for (原创 2021-05-25 08:31:37 · 366 阅读 · 0 评论 -
有傀儡节点实现单链表
有傀儡节点实现单链表 1、isEmpty()实现判断链表是否为空 2、toString()实现将链表元素序列化成一个字符串 3、printList()实现将链表元素依次打印出来 4、findLastNode()实现找到链表的最后一个结点 5、 size()实现计算链表长度 public class LinkedList { //傀儡节点 private Node head=new Node(); //判断是否为空 public boolean isEmpty(){原创 2021-05-25 01:18:58 · 64 阅读 · 0 评论 -
无傀儡节点链表增删改查及序列化实现
无傀儡节点链表增删改查及序列化实现 class Node2{ int val; Node2 next; public Node2(int val){ this.val=val; } } class LinkedList{ private Node2 head=null; //增删改查 //添加节点 public boolean add(int val){ if (head==null){原创 2021-05-25 01:08:35 · 61 阅读 · 0 评论 -
手动实现ArrayList顺序表
手动实现ArrayList顺序表 //简单实现ArrayList,元素按照String类型,非泛型版本 public class ArrayList { private String[] data=null; //当前顺序表中存在元素个数 private int size=0; //当前顺序表中最大容量,size>capacity时需要扩容 private int capacity=100; public ArrayList(){ da原创 2021-05-22 20:40:05 · 79 阅读 · 0 评论