数据结构与算法
文章平均质量分 70
Micheal-Lee
这个作者很懒,什么都没留下…
展开
-
二叉树深度
求二叉树的深度输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二元树的结点定义如下:struct SBinaryTreeNode // a node of the binary tree{ int m_nValue; // value of node原创 2013-11-01 23:54:29 · 734 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.csdn.net/v_JULY_v 。 第一节、B树、B+树、B*转载 2013-11-17 00:41:44 · 768 阅读 · 0 评论 -
已知二叉树前序和中序求后序
设某二叉树前序遍历为:ABCDEFGHI中序遍历为:BCAEDGHFI求该二叉树的后序遍历?因为二叉树前序遍历为:ABCDEFGHI,所以这棵树的根结点为A;又因为中序遍历为:BCAEDGHFI,所以这棵树的左子树为BC,右子树为EDGHFI;现在先看左子树中序遍历:BC,由前序遍历ABCDEFGHI,所以B为左子树的根结点;现看右子树中原创 2013-11-01 22:32:26 · 1590 阅读 · 1 评论 -
经典字符串处理问题
字符串的搜索,匹配,查找,压缩,编码/解码,是一类非常常见的问题。(1) 压缩一个字符串当中的空格,例如把" I like csdn "压缩成"I like csdn"。注意,单词之间的空格,N个空格要压缩到1个,也就是要减少N-1个空格。行首/行尾的空格全部去掉。 算法复杂度O(n),扫描一遍,在扫描的过程中记住当前已经有了多少个多余的空格(pos),然后把非空格的字转载 2013-10-25 23:14:18 · 766 阅读 · 0 评论 -
不开辟用于交换数据的临时空间,如何完成字符串的逆序
分析:对一个数据进行某种操作,然后进行这种操作的逆操作可以还原到本身。所以实现方 法是有多种的。以二进制操作速度最快。具体实现如下:#include #include void reverse(char *s){ int i = 0; int len = strlen(s); int j = len-1; while(i < j)转载 2013-10-16 22:11:42 · 752 阅读 · 0 评论 -
判断二叉树是否平衡二叉树
判断二叉树是不是平衡树,首先要求出树的左右子树的深度,如果二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。1.求二叉树的深度可参见二叉树深度。2.判断二叉树是否平衡有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差都不超过1,原创 2013-11-02 00:04:37 · 759 阅读 · 0 评论 -
常用排序算法详解(7种算法原理及代码)
相关知识介绍1、稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变a1,a4,原创 2013-11-15 00:01:41 · 944 阅读 · 0 评论