数据结构
GJWLION
这个作者很懒,什么都没留下…
展开
-
手撕LeetCode-数组-二分查找
手撕LeetCode-数组-二分查找二分查找的模板//二分查找int search(int[]nums,int traget){ int left=0,right=nums.length-1; while(left<=right){ int mid=left+(right-left)/2; if(nums[mid]==traget){ return mid;} else if(traget<nums[mid]){ right=mid-1;} else{原创 2020-12-21 21:54:18 · 164 阅读 · 0 评论 -
手撕LeetCode 层级遍历解法
层级遍历二叉树的代码结构void traverse(TreeNode root){ if(root==null) return; Queue<TreeNode> q=new LinkedList<>(); q.offer(root); while(!q.isEmpty()){ //层级遍历代码的位置 System.out.println(root.val); /*************************/ if(cur.left!=null){原创 2020-12-17 18:20:04 · 107 阅读 · 0 评论 -
手撕LeetCode 二叉树的序列化和反序列化
扣第 297 题「二叉树的序列化与反序列化」就是给你输入一棵二叉树的根节点 root,要求你实现如下一个类:public class Codec { // 把一棵二叉树序列化成字符串 public String serialize(TreeNode root) {} // 把字符串反序列化成二叉树 public TreeNode deserialize(String data) {}}我们可以用 serialize 方法将二叉树序列化成字符串,用 deseria原创 2020-12-17 16:42:37 · 154 阅读 · 1 评论 -
手撕LeetCode-二叉树的层次遍历方法
层次遍历的题目填充每个节点的下一个右侧节点指针II(116题)方法一填充每个节点的下一个右侧节点指针II(116题)方法一主要的思想:利用二叉树转为链表的想法进行。public Node connect(Node root){ if(root==null) return root; Queue<Node> queue=new LinkedList<>(); queue.add(root); while(!queue_isEmpty()){ int levelnum原创 2020-12-15 17:04:39 · 131 阅读 · 0 评论 -
手撕LeetCode(5)二叉树系列-2 二叉树的建立
二叉树的建立操作关键思路:搞清楚根节点应该做什么,后续的事情交给前/中/序的遍历框架 。构造最大二叉树(Leetcode 654题)方法:构造出根节点。寻找最大值的索引号,索引号左边的是左子树,右边的是右子树,按照这样递规执行操作。上代码:TreeNode constructMaximumBinaryTree(int[] nums){ return build(nums,0,nums.length-1);}TreeNode bulid(int[] nums,int start,int en原创 2020-12-05 23:52:43 · 140 阅读 · 0 评论 -
手撕LeetCode(4) 二叉树系列-1
手撕LeetCode(4) 二叉树系列-1递归的真谛:明确函数的定义,利用这个定义推导最终结果。注意:细化每个操作的实现。实践1. 翻转二叉树 (leetcode 226题)题目:镜像翻转一个二叉树方法:为前序遍历,二叉树的每个节点的左右子树的交换。上代码:TreeNode invertTree(TreeNode root){ //base case if(root==null) return null; //前序遍历 //交换节点 TreeNode temp; temp=ro原创 2020-12-04 14:48:45 · 108 阅读 · 0 评论 -
手撕LeetCode(3) 判断回文单链表
判断回文单链表核心思想:从中心向两边扩展。对于判断回文串,正读和倒读的结果应该相同。其中核心的做法就是将单链表进行倒着读,大致可以分为两种方法:反转链表,其中可以参考手撕LeetCode(2)中的reverse的实现,利用三个节点。ListNode reverse(ListNode head){ ListNode pre,cur,nxt; pre=NULL; cur=nxt=head; while(nxt!=NULL){ nxt=cur.next; cur.next=pre;原创 2020-12-03 14:03:34 · 138 阅读 · 0 评论 -
手撕LeetCode(2) 递归思维:K个一组反转链表
手撕LeetCode(2)递归思维:K个一组反转链表具体问题分析问题具体实现递归思维:K个一组反转链表利用迭代的方法反转列表。具体问题分析问题反转分为两部进行。第一步:先反转以head开头的K个元素。第二步:将K+1个元素作为head进行递归调用reverseKGroup函数。最后的操作:将以上两步的结果连结在一起。注意:递归时的base case,当不足为K个的时候,就保持不变。具体实现首先实现整个链表的反转。ListNode reverse(ListNode a){原创 2020-12-02 10:04:36 · 69 阅读 · 0 评论 -
数据结构那点事-图-prim算法生成最小生成树
/* 邻接矩阵表示的图结构*/#include <stdio.h>#include <stdlib.h>typedef char VertexType; //顶点类型应由用户定义typedef int EdgeType; //边上的权值类型应由用户定义 #define MAXVEX 100 //最大顶...原创 2019-06-25 14:47:01 · 187 阅读 · 0 评论 -
数据结构那点事-图的遍历
#define GRAPHMAT_H#include <iostream>using namespace std;#define MAX_VERTEX_NUM 20 //图的最大顶点#define INF 10000 //最大极值ty...原创 2019-06-20 20:32:43 · 134 阅读 · 0 评论 -
数据结构那点事--队列(链式结构)
#include<iostream>using namespace std;typedef int QEueue; #define OK 1 #define ERROR 0typedef int QElemType;typedef int Status;//队列的链式结构 /***************************在队列的链中,是使用类似于有头节点的链表...原创 2018-09-28 15:39:14 · 130 阅读 · 0 评论 -
数据结构那点事--线性表(链表)
#include<iostream>#include<stdlib.h>using namespace std;//链式线性表的存储结构#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType; typedef struc...原创 2018-09-23 16:26:47 · 100 阅读 · 0 评论 -
数据结构那点事--线性表(循环列表)
#include&amp;lt;iostream&amp;gt;using namespace std;typedef struct DulNode{ ElemType data; struct DuLNode *prior;//直接前驱结点 struct DuLNode *next;//直接后驱节点 }DulNode,*DuLinkList; Status ListInsert(LinkL...原创 2018-09-25 15:43:30 · 153 阅读 · 0 评论 -
数据结构那点事--栈(顺序结构实现)
#include&lt;iostream&gt;using namespace std;typedef int ElemType;typedef int Status;#define MAXSIZE 10#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef struct { ElemType data[...原创 2018-09-26 16:36:32 · 103 阅读 · 0 评论 -
数据结构那点事--二叉树
#include<iostream>#include<stdlib.h>using namespace std;typedef char TElemType;//二叉树的存储结构 typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; } BiTNode,*BiTree...原创 2018-10-03 10:26:06 · 97 阅读 · 0 评论 -
数据结构那点事--线索二叉树
#include<iostream>#include<stdlib.h> using namespace std;typedef char TElemType;typedef enum { Link, Thread } PointerTag; //enum{}枚举类型 //线索二叉树 //存储结构typedef s...原创 2018-10-03 12:28:26 · 123 阅读 · 0 评论 -
数据结构那点事--栈(链式结构)
#include&lt;iostream&gt;#include&lt;stdlib.h&gt;using namespace std;typedef int ElemType; typedef int Status;#define OK 1#define ERROR 0//栈的链式存储结构 typedef struct StackNode{ ElemType data; s...原创 2018-09-26 19:58:46 · 119 阅读 · 0 评论 -
数据结构那点事--图(邻接表)
#include<iostream>#include<stdlib.h>using namespace std;#define MAXVEX 100//邻接表//存储结构typedef char VertexType;//定义顶点的类型 typedef int EdgeType;//定义边的类型 typedef struct EdgeNode //定义...原创 2018-10-06 11:19:37 · 175 阅读 · 0 评论 -
数据结构那点事--队列(顺序结构)
#include&lt;iostream&gt;using namespace std;/**********************队列的链式表现队列的顺序表现形式于链表的顺序的表现形式相同在队列中比较重要的是对队列的空满的判断,以及队列长度的计算首先,空满的判断 1.定义flat,在当为空队列时,即front==rear ,flat=0; 在当为满队列...原创 2018-09-28 15:38:12 · 155 阅读 · 0 评论 -
数据结构那点事--线性表(顺序表)
#include&lt;iostream&gt;using namespace std;//线性表的数据结构 #define MAXSIZE 20typedef int ElemType;typedef struct{ ElemType data[MAXSIZE]={0}; int length; } Sqlist;#define OK 1#define ERROR 0#d...原创 2018-09-23 14:49:46 · 99 阅读 · 0 评论