From dde4bb7a841f1c515265cbefce94e8215acbd68e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=89=E6=96=87=E6=9D=B0?= Date: Thu, 17 Oct 2019 20:23:41 +0800 Subject: [PATCH] remove --- Binary Tree/1-二叉树/btree.c | 31 --- Binary Tree/1-二叉树/btree/bintree.c | 349 --------------------------- Binary Tree/1-二叉树/btree/btree | Bin 10336 -> 0 bytes Binary Tree/1-二叉树/btree/public.h | 34 --- Binary Tree/1-二叉树/btree/队列.h | 175 -------------- Binary Tree/1-二叉树/rbtree.c | 49 ---- Binary Tree/1-二叉树/suffix_tree.c | 34 --- 7 files changed, 672 deletions(-) delete mode 100644 Binary Tree/1-二叉树/btree.c delete mode 100644 Binary Tree/1-二叉树/btree/bintree.c delete mode 100755 Binary Tree/1-二叉树/btree/btree delete mode 100644 Binary Tree/1-二叉树/btree/public.h delete mode 100644 Binary Tree/1-二叉树/btree/队列.h delete mode 100644 Binary Tree/1-二叉树/rbtree.c delete mode 100644 Binary Tree/1-二叉树/suffix_tree.c diff --git a/Binary Tree/1-二叉树/btree.c b/Binary Tree/1-二叉树/btree.c deleted file mode 100644 index fd00afe..0000000 --- a/Binary Tree/1-二叉树/btree.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -### B树基础 - -B树即B-tree(B树就是B-tree),B是balanced,也就是平衡的意思。 - -B树又叫平衡多路查找树,节点的直接点个数可以多于2个,一颗m阶的B树: - -1) 树中每个节点做多含有m个子节点 -2) 根节点不是叶子节点,至少有2个孩子 -3) 所有叶子节点在同一层 -4) 除根节点和叶子节点外,每个分支节点至少有[m/2]个子树 -5) 有j个孩子的非叶子节点有 j-1 个关键码,关键码递增一次排列 - - -### B树应用 - -数据库 -文件系统 - - -### B树存储结构 - - - -### B树问题和延伸阅读 - - -*/ - - - diff --git a/Binary Tree/1-二叉树/btree/bintree.c b/Binary Tree/1-二叉树/btree/bintree.c deleted file mode 100644 index 8297aa2..0000000 --- a/Binary Tree/1-二叉树/btree/bintree.c +++ /dev/null @@ -1,349 +0,0 @@ -/** -* 第一次题目 :构建二叉树(链表存储方式),空格表示空树,实现二叉树的基本操作:创建,遍历(先,中,后,按层)二叉树 -* 提交邮箱 :510495266@qq.com to learn_algorithm@163.com -* 邮件题目 :第一期第一次作业 -**/ - -#include -#include - - -typedef struct BiTNode{ - - char item; - struct BiTNode *lChild,*rChild; - -}BiTNode,*BiTree; - - - - - -// ========================================================================== - - -#define OK 1 -#define ERROR 0 -typedef int bool; - - -typedef BiTree ElemType ; // 也可能是一个复杂的复合类型 -typedef int Status; - - - -//队列的顺序存储 -typedef struct Node{ - - ElemType *elem; - ElemType *head; - ElemType *tail; - int length; // 当前队列的长度 - int size; // 队列容器的长度,在队列慢得时候可以扩容 - - -}SqQueue; - -// -// 在队列采用顺序存储时,有一个毛病,就是队列操作一段时间后,头指针到了队列容器的尾部,而头指针前面的容器内存不可用了, -//造成内存极大的浪费,这个问题可以通过循环队列来解决。但是在 -// 链式队列上则不存在这样的问题 -// - - -typedef struct QNode{ - - struct QNode *next; - ElemType elem; - -}LinkQueue; - - -// 队列需要维护两个 指针 (队头指针,队尾指针) - -typedef struct{ - - LinkQueue *head; - LinkQueue *tail; - int length; - -}Queue; - - -Status initQueue(Queue *queue);// 带头结点,没有引用传值,就用指针的指针吧 -bool isEmpty(Queue *q); -int length(Queue *q); - - -// 在头部插入,尾部删除 -Status getHead(Queue *q,ElemType *e); -Status enQueue(Queue *q,ElemType e); -Status deQueue(Queue *q,ElemType *e); - -void traveser(Queue *q); - - -Status initQueue(Queue *queue){// 带头结点,没有引用传值,就用指针的指针吧 - - LinkQueue *lq = (LinkQueue *)malloc(sizeof(LinkQueue)); - if (!lq) { - return ERROR; - } - - lq->elem = NULL; - lq->next = NULL; - - (queue)->head = (queue)->tail = lq; // -> 优先级高于 * ,老老实实打上括号 - (queue)->length = 0; - - return OK; - -} - -bool isEmpty(Queue *q){ - - return (q->head == q->tail); - -} - -int length(Queue *q){ - -// int ret; -// LinkQueue *p = q->head; -// while (p != q->tail) { -// ret++; -// p = p->next; -// -// } - - return q->length; - -} - -Status getHead(Queue *q,ElemType *e){ - - LinkQueue *p = q->head->next; - if (!p) { - *e=NULL; - return ERROR; - } - - *e = p->elem; - return OK; - -} - -// 入队(加入到队尾) -Status enQueue(Queue *q,ElemType e){ - - LinkQueue *newNode = (LinkQueue *)malloc(sizeof(LinkQueue)); - if (!newNode) { - return ERROR; - } - newNode->elem = e; - newNode->next = NULL; - q->tail->next = newNode; - q->tail = newNode; - - q->length++; - - return OK; - -} - -//出队(队头). 注意,可能只有1个元素,造成队尾指针丢失 -Status deQueue(Queue *q,ElemType *e){ - - LinkQueue *p = q->head->next; - if (!p) {// 队列空 - return ERROR; - } - - if (e) { - *e = p->elem ; - } - - LinkQueue *temp = p->next; - q->head->next = temp; - if (p == q->tail) { - q->tail = q->head; - } - free(p); - - - q->length--; - - return OK; - -} - - -void traveser(Queue *q){ - - LinkQueue *p = q->head->next; - while (NULL != p) { - //printf("%d\n",p->elem); - p=p->next; - } - -} - - -// ================================================== - - - -/* -int CreateBiTree(BiTree *T) -{ - - *T = (BiTNode *)malloc(sizeof(BiTNode)); - if (*T==NULL) - { - printf("memery malloc failure !\n"); - return -1; - } - - printf("enter data to create node:\n"); - scanf("%c",&((*T)->item)); - if((*T)->item=='#'){ - *T=NULL; - } - if(*T){ - printf("创建左子树:\n"); - CreateBiTree( &((*T)->lChild) ); - printf("创建右子树:\n"); - CreateBiTree( &((*T)->rChild) ); - } - - return 0; -} -*/ - -// BiTree CreateBiTree() - -// 先序遍历方式创建二叉树 -BiTree CreateBiTree(){ - - char c; - BiTNode *tree; - - // 过滤回车键 - - - scanf("%c",&c); - if (c==' ') - { - printf("创建空节点\n"); - tree = NULL; - }else{ - printf("创建节点 %c\n",c); - tree = (BiTNode *)malloc(sizeof(BiTNode)); - tree->item = c; - tree->lChild = CreateBiTree(); - tree->rChild = CreateBiTree(); - } - - return tree; - -} - - -int PreOrderTraverse(BiTree T){ - - if(T){ - printf("%c\n",T->item ); - PreOrderTraverse(T->lChild); - PreOrderTraverse(T->rChild); - } - - return 0; -} - -int InOrderTraverse(BiTree T){ - - if (T) - { - InOrderTraverse(T->lChild); - printf("%c\n", T->item); - InOrderTraverse(T->rChild); - } - - return 0; -} - -int PostOrderTraverse(BiTree T){ - - if (T) - { - PostOrderTraverse(T->lChild); - PostOrderTraverse(T->rChild); - printf("%c\n",T->item ); - } - - return 0; -} - -// 广度优先遍历 (队列实现) -int LevelOrderTraverse(BiTree T){ - - if (T) - { - Queue queue; - initQueue(&queue); - - BiTree u; - u=(BiTree)malloc(sizeof(BiTNode)); - enQueue(&queue, T); - while(!isEmpty(&queue)) - { - deQueue(&queue, &u); - printf("%c",u->item); - if(u->lChild) - enQueue(&queue, u->lChild); - if(u->rChild) - enQueue(&queue, u->rChild); - } - } - - return 0; -} - - - - int main(int argc, char const *argv[]) -{ - /* code */ - BiTree binaryTree; - - printf("创建二叉树,输入\"空格\"创建空节点(先序方式建立二叉树):\n"); - binaryTree = CreateBiTree(); - if(binaryTree==NULL){ - printf("创建空的二叉树\n"); - } - - - printf("前序遍历:\n"); - PreOrderTraverse(binaryTree); - printf("\n\n"); - - printf("中序遍历:\n"); - InOrderTraverse(binaryTree); - printf("\n\n"); - - printf("后序遍历:\n"); - PostOrderTraverse(binaryTree); - printf("\n\n"); - - printf("层序遍历:\n"); - LevelOrderTraverse(binaryTree); - printf("\n\n"); - - - return 0; -} - - - - - diff --git a/Binary Tree/1-二叉树/btree/btree b/Binary Tree/1-二叉树/btree/btree deleted file mode 100755 index 2ab2e85980bbdc3ffb20c6fe5d5389d6526e6716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10336 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 Zjk4qhnoEfMG@w5R=uZIZ?4R)=;y=lI8lwOJ diff --git a/Binary Tree/1-二叉树/btree/public.h b/Binary Tree/1-二叉树/btree/public.h deleted file mode 100644 index 27b6d1f..0000000 --- a/Binary Tree/1-二叉树/btree/public.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// public.h -// DS -// -// Created by mac on 13-9-8. -// Copyright (c) 2013年 xiaoran. All rights reserved. -// - -#ifndef DS_public_h -#define DS_public_h - -//#include -#include "stdlib.h" // 后来,换到mac环境下,#include 应该为 或 #include "stdlib.h" -#include -#include // for memset - - -typedef char ElemType ; // 也可能是一个复杂的复合类型 -typedef int Status; - - - -#define OK 1 -#define ERROR 0 - -typedef int bool; -#define YES 1 -#define NO 0 - -#define DEFAULT_SIZE 10 -#define OUT_OF_BOUND -1 - - -#endif diff --git a/Binary Tree/1-二叉树/btree/队列.h b/Binary Tree/1-二叉树/btree/队列.h deleted file mode 100644 index 220ae46..0000000 --- a/Binary Tree/1-二叉树/btree/队列.h +++ /dev/null @@ -1,175 +0,0 @@ -// -// 队列.h -// 只在一段进行插入,另一端删除元素 -// -// Created by mac on 13-9-8. -// Copyright (c) 2013年 xiaoran. All rights reserved. -// - -#ifndef DS____h -#define DS____h - -#include "public.h" -#include "bintree.c" - -typedef BiTNode ElemType; - -//队列的顺序存储 -typedef struct Node{ - - ElemType *elem; - ElemType *head; - ElemType *tail; - int length; // 当前队列的长度 - int size; // 队列容器的长度,在队列慢得时候可以扩容 - - -}SqQueue; - -// -// 在队列采用顺序存储时,有一个毛病,就是队列操作一段时间后,头指针到了队列容器的尾部,而头指针前面的容器内存不可用了, -//造成内存极大的浪费,这个问题可以通过循环队列来解决。但是在 -// 链式队列上则不存在这样的问题 -// - - -typedef struct QNode{ - - struct QNode *next; - ElemType elem; - -}LinkQueue; - - -// 队列需要维护两个 指针 (队头指针,队尾指针) - -typedef struct{ - - LinkQueue *head; - LinkQueue *tail; - int length; - -}Queue; - - -Status initQueue(Queue *queue);// 带头结点,没有引用传值,就用指针的指针吧 -bool isEmpty(Queue *q); -int length(Queue *q); - - -// 在头部插入,尾部删除 -Status getHead(Queue *q,ElemType *e); -Status enQueue(Queue *q,ElemType e); -Status deQueue(Queue *q,ElemType *e); - -void traveser(Queue *q); - - -Status initQueue(Queue *queue){// 带头结点,没有引用传值,就用指针的指针吧 - - LinkQueue *lq = (LinkQueue *)malloc(sizeof(LinkQueue)); - if (!lq) { - return ERROR; - } - - lq->elem = 0; - lq->next = NULL; - - (queue)->head = (queue)->tail = lq; // -> 优先级高于 * ,老老实实打上括号 - (queue)->length = 0; - - return OK; - -} - -bool isEmpty(Queue *q){ - - return (q->head == q->tail); - -} - -int length(Queue *q){ - -// int ret; -// LinkQueue *p = q->head; -// while (p != q->tail) { -// ret++; -// p = p->next; -// -// } - - return q->length; - -} - -Status getHead(Queue *q,ElemType *e){ - - LinkQueue *p = q->head->next; - if (!p) { - *e=0; - return ERROR; - } - - *e = p->elem; - return OK; - -} - -// 入队(加入到队尾) -Status enQueue(Queue *q,ElemType e){ - - LinkQueue *newNode = (LinkQueue *)malloc(sizeof(LinkQueue)); - if (!newNode) { - return ERROR; - } - newNode->elem = e; - newNode->next = NULL; - q->tail->next = newNode; - q->tail = newNode; - - q->length++; - - return OK; - -} - -//出队(队头). 注意,可能只有1个元素,造成队尾指针丢失 -Status deQueue(Queue *q,ElemType *e){ - - LinkQueue *p = q->head->next; - if (!p) {// 队列空 - return ERROR; - } - - if (e) { - *e = p->elem ; - } - - LinkQueue *temp = p->next; - q->head->next = temp; - if (p == q->tail) { - q->tail = q->head; - } - free(p); - - - q->length--; - - return OK; - -} - - -void traveser(Queue *q){ - - LinkQueue *p = q->head->next; - while (NULL != p) { - printf("%d\n",p->elem); - p=p->next; - } - -} - - - -#endif diff --git a/Binary Tree/1-二叉树/rbtree.c b/Binary Tree/1-二叉树/rbtree.c deleted file mode 100644 index 6e276f7..0000000 --- a/Binary Tree/1-二叉树/rbtree.c +++ /dev/null @@ -1,49 +0,0 @@ -/* -### 红黑树基础 - -一种自平衡的二叉查找树。在每个节点中增加一个存储位表示节点的颜色,可以是red或black - -红黑树比AVL树优秀在哪? - - - - - -5个性质 - -性质1. 节点是红色或黑色。 -性质2. 根是黑色。 -性质3. 所有叶子都是黑色(叶子是NIL节点)。 -性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) -性质5. 从任一节点到其每个叶子的所有简单路径 都包含相同数目的黑色节点。 - - - -### 红黑树应用 - - -### 存储结构 - - -### 问题与延伸阅读 - - -*/ - -typedef int ElemType - -typedef struct node{ - - int color; - ElemType key; - struct node *lChild,*rChild,*pChild; - -}*RBTree; - - -int rbtree_insert(RBTree *tree,ElemType key); -int rbtree_remove(RBTree *tree,ElemType key); -int rbtree_search(RBTree *tree,ElemType key); - - - diff --git a/Binary Tree/1-二叉树/suffix_tree.c b/Binary Tree/1-二叉树/suffix_tree.c deleted file mode 100644 index 67b05c3..0000000 --- a/Binary Tree/1-二叉树/suffix_tree.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - -### 后缀树(suffix tree)基础 - -又叫后缀trie,与trie最大不同在于:字符串集合由指定的后缀子串组成。 - - -很适合用来操作字符串的子串。 用于字符串的匹配和查询 - - -### 后缀树应用 - - - 从目标串T中判断是否包含模式串P(时间复杂度接近KMP算法); - 从目标串T中查找最长的重复子串; - 从目标串T1和T2中查找最长公共子串; - Ziv-Lampel无损压缩算法; - 从目标串T中查找最长的回文子串; - - - -### 存储结构 - - -### suffix tree 问题与延伸阅读 - -后缀数组 - - -*/ - - - -