数据结构
菠萝菠萝菠萝葡萄
这个作者很懒,什么都没留下…
展开
-
二叉树求高度以及叶子节点数目
int btDepth(TreeNode* root) { if(NULL==root) return 0; int lh = btDepth(root->left); int rh = btDepth(root->right); int height = lh>rh?lh+1:rh+1; return height; } void leafNum(TreeNode* root,int* num) { if(NULL原创 2021-05-28 11:45:26 · 449 阅读 · 0 评论 -
学习哈希表
参考:https://www.bilibili.com/video/BV1si4y1b7Rs/?spm_id_from=333.788.recommend_more_video.1原创 2021-05-13 16:19:01 · 62 阅读 · 0 评论 -
时间复杂度
参考:https://www.bilibili.com/video/BV14j411f7DJ?from=search&seid=15258461156211809121 给2维数组赋值,空间复杂度O(n^2)原创 2021-05-13 15:39:58 · 64 阅读 · 0 评论 -
递归方法实现没有头节点的链表反转
Node* reverseList(Node* head) { if(head->next == NULL) return head; if(head==NULL) return NULL; Node* p = reverseList(head->next); head->next->next = head; head->next = NULL; return p; }原创 2021-05-13 11:59:26 · 206 阅读 · 0 评论 -
there is a dog 转换成 dog a is there
adsf原创 2021-05-12 16:36:31 · 218 阅读 · 0 评论 -
搜索二叉树,插入,搜索,找最值,找父节点
#include <iostream> using namespace std; typedef struct _TreeNode { int data; struct _TreeNode* left; struct _TreeNode* right; }TreeNode; int getTreeHeightByPostOrder(TreeNode* r) { int lH,rH,maxH; if(r) { lH = ge原创 2021-05-07 11:49:38 · 81 阅读 · 0 评论 -
折半查找和快速排序
123原创 2021-05-06 11:16:47 · 462 阅读 · 0 评论 -
希尔排序和插入排序
#include <iostream> using namespace std; //插入排序 void insertSort(int* arr,int n) { int i,j,t; for(i = 1;i<n;i++) { t = arr[i]; for(j=i;t<arr[j-1]&&j-1>=0;j--) arr[j] = arr[j-1]; arr[j]原创 2021-05-06 10:07:07 · 73 阅读 · 0 评论 -
二叉树的先序遍历(循环+栈)
//下面使用循环加栈实现二叉树的遍历 void preOrderIterator(TreeNode* r) { if(r) { Stack s; initStack(&s); while (r||!isStackEmpty(&s)) { while (r) { //压栈 printf("%d ",r-&原创 2021-04-29 17:36:49 · 159 阅读 · 0 评论 -
栈的链式存储的实现
#ifndef STACK_H #define STACK_H typedef struct _Node { char data; struct _Node* next; }Node; typedef struct _Stack { Node* top; }Stack; void initStack(Stack* s); int isStackEmpty(Stack* s); void push(Stack* s,char ch); char pop(Stack* s)原创 2021-04-29 17:05:13 · 87 阅读 · 0 评论 -
二叉树的遍历(递归实现)
#include <iostream> using namespace std; //二叉树,统一节点 //学二叉树的目的是查找 //二叉树统一节点结构的原因:例如:左子树代表下级,右子树代表下级 //所谓的先中后是:访问根节点的时机 //先序遍历即:根左右 //中序遍历即:左根右 //后序遍历即:左右根 //只两者可求第三者,必须有中序遍历 //已知先序中序,求后序:先序遍历第一个即为根,根据先序遍历找根,根据中序遍历找左右子树(只在第一步有用) //已知中序后续求先序:后序遍历.原创 2021-04-29 15:42:14 · 116 阅读 · 0 评论 -
二分查找
#include <stdio.h> #include<stdlib.h> int* compare(int* a,int* b) { return *a>*b?1:0; } int binSearch(int* arr,int low,int high,int find) { int mid; while (low<=high) { mid = (low+high)/2; if(arr[mid] == fi原创 2021-03-27 17:28:13 · 53 阅读 · 0 评论 -
时间复杂度与空间复杂度
时间复杂度: 看看有几重 for 循环,只有一重则时间复杂度为 O(n),二重则为 O(n2),依此类推,如果有二分则为 O(log2n),二分例如快速幂、二分查找,如果一个 for 循环套一个二分,那么时间复杂度则为 O(nlog2n)。 空间复杂度 一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。若一个算法为递归算法,其空间复杂度为递归所使用的堆栈空间的大小,它等于一次调用所分配的临时存储空.原创 2021-03-27 16:59:09 · 84 阅读 · 0 评论 -
链表的增删改查排序删除等操作自实现
#include <stdio.h> #include<stdlib.h> //注意事项: //1.在使用未typedef的结构体时,前一定要加struct //2.其实所谓头插法的遍历就是一种栈 因其为“先进后出” typedef struct _Node { int data; struct _Node* next; }Node; //初始化链表即创建头指针以及头节点 Node* init_list(void) { Node* head = (N原创 2021-02-19 21:24:46 · 183 阅读 · 0 评论 -
栈的线式存储和链式存储的实现
士大夫原创 2021-02-09 12:57:02 · 105 阅读 · 0 评论