
数据结构和算法
EnjoyCoding.
不管何时何地做你想做的事永远都不嫌晚,如果你发现生活不如意,我希望你有勇气重来。 《本杰明.巴顿奇事》
展开
-
数组实现栈、队列,两个栈实现一个队列,两个队列实现一个栈
一、使用数组实现队列使用数组实现循环队列会出现假溢出的问题,所以将数组首尾相接,构成循环队列。使用数组实现循环队列当rear指针和front指针指向同一位置是无法判断队列是满还是空解决这个问题的方法是牺牲一个空间,当队列为空时rear=front;当队列满时(rear+1)%数组长度=front。如图代码如下public class QueueByArray {...原创 2019-03-25 17:33:22 · 472 阅读 · 0 评论 -
二叉树的遍历
一、层序遍历层序遍历思路先将树的根节点入队, 如果队列不空,则进入循环 { 将队首元素出队,并输出它; 如果该队首元素有左孩子,则将其左孩子入队; 如果该队首元素有右孩子,则将其右孩子入队 }public static void level(TreeNode head){ if (head==null){ return; ...原创 2019-04-01 21:37:38 · 145 阅读 · 0 评论 -
链表
一、反转链表递归public static LinkNode reverseDigui(LinkNode head) { if (head == null || head.next == null) {//如果链表为空或者链表中只有一个元素 return head; } LinkNode retNode = reve...原创 2019-04-02 01:49:21 · 163 阅读 · 0 评论 -
二叉树求宽度
一、求每层最多的节点思路:层序遍历,记录每层个数。/** * 二叉树求宽度(求每层最多多少个节点的情况) */ public static int widthOfBinaryTree(TreeNode root) { if (root == null) { return 0; } Queu...原创 2019-04-07 22:36:25 · 9792 阅读 · 0 评论 -
排序算法之堆排序
//堆排序 public static void heapSort(int[]arr){ if (arr.length<2){ return; } for (int i = 0; i < arr.length; i++) {//将数组构造成一个堆 heapInsert(arr,i)...原创 2019-04-09 11:18:09 · 186 阅读 · 0 评论