数据结构
_阿锋丶
这个作者很懒,什么都没留下…
展开
-
剑指offer:求两个链表的第一个公共节点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode *ta = pHead1; ListNode *tb转载 2021-02-19 22:12:29 · 157 阅读 · 0 评论 -
剑指offer:合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路及代码迭代求解如果l1指向的结点值小于等于l2指向的结点值,则将l1指向的结点值链接到cur的next指针,然后l1指向下一个结点值否则,让l2指向下一个结点值 循环步骤1,2,直到l1或者l2为nullptr 将l1或者l2剩下的部分链接到cur的后面/*struct ListNode { int val; struct ListNode *next; ListNode(in转载 2021-02-01 12:30:34 · 81 阅读 · 0 评论 -
输入一棵二叉树,判断该二叉树是否是平衡二叉树。(剑指offer-平衡二叉树)
class Solution {public: map<TreeNode*,int> depthArr; int depth(TreeNode *node){// 如果没有节点,直接返回0 if(!node) return 0;// 下面的代码就是为了计算出每一个节点的深度,并把它存在c++映射结构map中 if(depthArr.find(node)!=depthArr.end())原创 2021-01-27 11:52:27 · 158 阅读 · 0 评论 -
C++ STL 各种数据结构知识点速查
C++ STL 各种数据结构知识点速查转载 2021-01-23 21:22:21 · 177 阅读 · 0 评论 -
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
题目输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路(2种)分治法,求左子树的深度和右子树深度的最大值,采用递归的方法层次遍历,一层一层的加得到深度此题目和我昨天做的差不多,点击这里看另一道相似题目,所以我很快用下面的第二种层次遍历的方法做出来了,现在我发现这种二叉树的题目大部分是可以用遍历的方法解决的代码(2种)1. 分治法,求左子树的深度和右子树深度的最大值,采用递归的方法/*struct TreeNo原创 2021-01-23 20:52:13 · 546 阅读 · 0 评论 -
操作给定的二叉树,将其变换为源二叉树的镜像的多种方法多种题解(已通过)
文章目录题目及分析思路(2种)代码(2个)1. 在原有的树上直接将所有左右子树节点交换2. 重新遍历生成一颗树,这棵树刚好是原来的镜像题目及分析操作给定的二叉树,将其变换为源二叉树的镜像。分析:就是将二叉树的所有左右子树节点交换过来就可以了思路(2种)这里思路可以有以下两种在原有的树上直接将所有左右子树节点交换重新遍历生成一颗树,这棵树刚好是原来的镜像代码(2个)1. 在原有的树上直接将所有左右子树节点交换递归的方法很是简便,但是需要注意的是在有些地方会ac不了,毕竟很耗内存原创 2021-01-22 11:15:11 · 269 阅读 · 0 评论 -
软考-数据结构所有知识点总结
数组是个程序员就不用多啰嗦了稀疏矩阵所谓的稀疏矩阵,就是当前矩阵中的大量元素是0或者是大量元素是同一个值,这时候我们只用存储一少部分不同的值。节省了空间例题用代入法代入排除选项线性表顺序表开辟连续的存储空间,采用一维数组的形式存链表开辟离散的空间,每一个节点分为数据域和指针域单链表删除节点p->next = q->next插入节点s-next = p->next;p->next =s;单链表有头结点的有优点有头节点可原创 2020-10-24 12:25:17 · 970 阅读 · 1 评论 -
记一次项目实践为了显示antd的树状table将json数据转化为树状形式
一开始的数据是这样的为了使table能显示子节点 所以要重新数据处理处理算法如下// import Menu from "@/services/menu"import { map } from "lodash"function getMenuData(data) { console.log(data); if (data[0].level === undefined) { const rows = map(data, (item, index) => (原创 2020-07-23 19:23:37 · 520 阅读 · 0 评论 -
最详细的图解二叉排序树和平衡二叉树(定义,区别,构造)
二叉排序树(又称二叉查找树)即左子树要比根大,而右子树要比根小这棵树最好的情况就是形成一颗完全二叉树这时候,他的高度是最低的,最多要查找的次数也是最少的,最差的情况就是高度为n(刚好n是所有节点数),完全就是一个线性结构的时候这里就引出了平衡二叉树二叉平衡树实际上是对不平衡的二叉排序树进行处理如果不平衡要怎么办–进行平衡化处理例子上图从宏观上看:e的根节点会变成他的...原创 2020-04-01 10:02:21 · 2764 阅读 · 3 评论 -
堆和堆排序
堆和堆排序什么是堆如下图所以只有第一个是堆,第二个不是完全二叉树,第三个不具备父母优势怎么构造堆堆排序伪代码具体算法void sift(RecType R[],int low,int high){int i=low,j=2*i;RecType tmp=R[i];while(j<=high){if(j<high&&R[j].k...原创 2020-04-01 09:14:34 · 145 阅读 · 0 评论 -
二叉树的层次,中序,先序,中序,后序遍历的递归和非递归算法以及查询二叉树的祖先节点的算法,查询小写字母的个数
#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct node { ElemType data; //数据元素 struct node *lchild; //指向左孩子节点 struct node *rchild; //指...原创 2019-12-23 11:20:40 · 245 阅读 · 0 评论 -
链式队列初始化,创建,插入,删除,查找等基本算法(出自李春葆数据结构)
//文件名:algo3-4.cpp#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct qnode{ ElemType data; struct qnode *next;} QNode;/*typedef struct{ QNode *front; QNod...原创 2019-12-23 11:13:47 · 445 阅读 · 0 评论 -
顺序队列的初始化,创建,插入,删除,查找等基本算法(出自李春葆数据结构)
//文件名:algo3-3.cpp#include <stdio.h>#include <malloc.h>#define MaxSize 5typedef char ElemType;typedef struct { ElemType data[MaxSize]; int front,rear; //队首和队尾指针} SqQueue;void Ini...原创 2019-12-23 11:09:53 · 498 阅读 · 0 评论 -
链栈的初始化,创建,插入,删除,查找等基本算法(出自李春葆数据结构)
//文件名:algo3-2.cpp#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct linknode{ ElemType data; //数据域 struct linknode *next; //指针域} LiStack;void InitStack(...原创 2019-12-23 11:06:45 · 843 阅读 · 0 评论 -
双链表的元素排序,双链表的的所有基本算法(初始化,创建,插入,删除,查找等)(李春葆版)
//文件名:algo2-3.cpp#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct DNode //定义双链表结点类型{ ElemType data; struct DNode *prior; //指向前驱结点 struct DNode *next; El...原创 2019-12-23 11:00:46 · 377 阅读 · 0 评论 -
头插法和尾插法创建单链表,及其单链表的所有基本算法(初始化,创建,插入,删除,查找等)(李春葆版)
//文件名:algo2-2.cpp#include <stdio.h>#include <malloc.h>typedef char ElemType;typedef struct LNode //定义单链表结点类型{ ElemType data; struct LNode *next;} LinkList;void InitList(LinkLis...原创 2019-12-23 10:07:13 · 994 阅读 · 0 评论 -
线性表的顺序存储结构的初始化,创建,插入,删除,查找等基本算法(出自李春葆数据结构)
//文件名:algo2-1.cpp*/#include <stdio.h>#include <malloc.h>#define MaxSize 50typedef char ElemType;typedef struct { ElemType data[MaxSize]; int length;} SqList;void InitList(SqLi...原创 2019-12-23 09:45:28 · 1136 阅读 · 0 评论 -
表达式括号匹配 数据结构Stack
题目描述假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。输入格式一行:表达式输出格式一行:“YES” 或“NO”输入输出样例输入 #1 复制2*(x+y)/(1-x)@输出 #1 复制...原创 2019-09-23 10:32:07 · 551 阅读 · 2 评论