日常代码与刷题
梦剧场的精灵
这个作者很懒,什么都没留下…
展开
-
20170713_合并有序链表_u
链表之前,先说一下线性表。线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。 线性表有两种存储方式,一种是顺序存储结构,另一种是链式存储结构。链式存储结构就是两个相邻的元素在内存中可能不是相邻的,每一个元素都有一个指针域,指针域一般是存储着到下一个元素的指针。这种存储方式的 优点是:插入原创 2017-07-13 13:52:29 · 272 阅读 · 0 评论 -
快速排序实现之递归与非递归
一、算法思想: 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..piv转载 2017-08-01 13:38:12 · 349 阅读 · 0 评论 -
判断一个树是否为完全二叉树
完全二叉树的定义是,前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。 采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树。这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。//二叉树结点定义 typedef struc原创 2017-07-27 23:20:54 · 383 阅读 · 0 评论 -
如何根据前序遍历和中序遍历重建二叉树
题目:由前序遍历和中序遍历重建二叉树 (前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5) 1.解题思路: 由前序遍历序列可知,第一个节点是根节点, 由中序遍历序列可知,第一个节点是根节点的左子树节点, 而且前序遍历中,根节点左边是左子树,右边是右子树 由上述分析结果,可以递归调用构建函数,根据左子树、右子树的先序、中序遍历重建左、右子树。代码及注释如下#i原创 2017-07-28 11:35:02 · 234 阅读 · 0 评论 -
如何判断一个二叉树是否为另一二叉树子树u
#include <stdio.h> #include <stdlib.h> // 二叉树结点定义 struct btree { int value; int lchild, rchild; }; // A树和B树的最多结点数 int n, m; /** * 第二步判断,判断A树是否有B树的子结构 */ int doesTree1HasTree转载 2017-07-28 19:24:35 · 258 阅读 · 0 评论