数据结构
findgeneralgirl
这个作者很懒,什么都没留下…
展开
-
二叉树的遍历
二叉树的三种遍历1.后序遍历void PreOrder(BinaryTree *ptr){ if (ptr != NULL) { PreOrder(ptr->leftchild); PreOrder(ptr->rightchild); printf("%c ", ptr->data); }}核心思想:先访问左孩子,再访问右原创 2017-09-23 21:52:15 · 294 阅读 · 0 评论 -
二叉树相关操作
创建二叉树从键盘输入字符创建二叉树BTree CreateTleft(){ BinaryTree* temp = NULL; ElemType a = 0; scanf_s("%c", &a); if (a != '#') { temp = BuyNode(); temp->data = a; temp->原创 2017-09-26 23:11:43 · 252 阅读 · 0 评论 -
二叉树的相关操作(2)--各类分支查找
1.检测二叉树单分支个数int SizeBrach(BinaryTree* ptr){ int num = 0; if (ptr != NULL) { num = SizeBrach(ptr->leftchild); if (ptr->leftchild != NULL&&ptr->rightchild == NULL || ptr->lef原创 2017-09-28 18:10:21 · 471 阅读 · 0 评论 -
堆排序简要介绍
堆排序堆是完全二叉树,具有如下性质:大顶堆:每个节点的值大于或等于其左右孩子结点的值,小顶堆:每个节点的值都小于或等于其左右孩子结点的值。 堆排序是根据完全二叉树的性质5来排序的。 完全二叉树性质五: 1.如果i=1,则结点i是二叉树的根,无双亲,如果i>1,则其双亲是结点i/2 2.如果2*i>n,则结点i无左孩子,否则其左孩子是结点2*i 3.如果2*i+1>n,则该结点i无右孩子,否原创 2017-09-23 23:03:49 · 303 阅读 · 0 评论 -
数据结构-前中后序遍历的非递归实现
前序遍历实现思路: 前序遍历,先打印根结点,再打印左右孩子,我们循环遍历各个结点时,要做到先出栈根节点,再将根节点右孩子和左孩子入栈,等到下一轮循环时,就先出栈其左孩子,再将左孩子的右左孩子入栈,直到叶子结点,按照左中右的顺序遍历完所有的结点。 void NicePreOrder(BinaryTree *ptr)//非递归进行前中后序遍历{ assert(ptr != NULL);原创 2017-10-11 22:30:07 · 1320 阅读 · 0 评论 -
线索化二叉树
在二叉树中,有很多节点的指针域为空域,造成结点的浪费。针对这种现象,提出线索化二叉树这一概念,其基本思想是遵从中序遍历二叉树,将二叉树的空节点有效的利用起来。具体来说,是按照以下的步骤来实现的。本文是利用中序遍历的思想对二叉树进行一个线索化:已知一颗二叉树如图所示:如图1,是一颗普通的二叉树,一个节点有左右孩子和数据域。现在我们知道这个二叉树的中序遍历结果,如图2所示,然后按照中序原创 2018-02-04 17:44:59 · 452 阅读 · 0 评论 -
KMP模式匹配算法
在准备一些实习笔试时,发现编程题的重点都落在了字符串上,题目各异,但却着重考察了对字符串的掌握程度。故专门复习了字符串匹配算法。在字符串的匹配算法中,最好理解的就是朴素匹配算法,即通过字符串1和字符串2点对点式的暴力匹配,得到匹配结果。还有一种是KMP模式匹配算法,它分析了朴素匹配算法中不必要的匹配情况,更好的为匹配节省了时间。1.朴素匹配算法其匹配过程如下图所示,非常清晰明了。从src的第一个字...原创 2018-04-19 17:35:31 · 1714 阅读 · 2 评论