摘要:
二叉排序树 1,二叉排序树(Binary Sort Tree)又称二叉查找树。 2,它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; 平衡二叉树 1,平衡二叉树,又称AVL树。 2,它或者是一棵空树,或者是具有下列性质的二叉树: (1)它的左子树和右子树都是平衡二叉树; (2)左子树和右子树的高度之差之差的绝对值不超过1. 红黑树 1,红黑树是一种自平衡二叉查找树. 典型的用途是实现关联数组。它是复杂的,但它的操作有着良好的最坏 阅读全文
摘要:
序列Seq=[a,b,…z,aa,ab…az,ba,bb,…bz,…,za,zb,…zz,aaa,…] 类似与excel的排列,任意给出一个字符串s=[a-z]+(由a-z字符组成的任意长度字符串),请问s是序列Seq的第几个。注意到每满26个就会向前进一位,类似一个26进制的问题。比如ab,则位置为26*1 + 2;比如za,则位置为26*26 + 1;比如abc,则位置为26*26*1 + 26*2 + 3;#include<iostream>#include <cstdlib>using namespace std;unsigned int position(ch 阅读全文
摘要:
已知一个字串由GBK汉字和ascii编码的数字和字母混合组成,编写c语言函数实现从中去掉所有ascii编码的字母和数字(包括大小写),要求在原字符串上返回结果。例如: “http://hi.baidu.com/mianshiti 是讨论IT面试题的博客” 会变成 “://../ 是讨论面试题的博客”。注:函数接口为:int filter_ascii(char* gbk);汉字的GBK编码范围是0x8140-0xFEFE。#include<iostream>#include <cstdlib>using namespace std;int filter_ascii(cha 阅读全文
摘要:
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL) { ... 阅读全文
摘要:
在介绍KMP算法之前,先介绍一下BF算法。 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明: S: ababcababa P:ababaBF算法匹配的步骤如下 i=0 i=1 i=2 i=3 i=4 第一趟:ababcababa 第二趟:ababcababa 第三趟:ababcababa 第四趟:ababcababa 第五趟:ababcababa ababa ababa aba.. 阅读全文