二叉树(二):二叉树的表示和实现
2012-05-22 18:41:40摘要:一、顺序存储结构表示二叉树 所谓二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。一般是按照二叉树结点从上至下、从左到右的顺序存储。 依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系。 对于一般的二叉树,如果仍按从上至下和从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能... 阅读全文
摘要:一、顺序存储结构表示二叉树 所谓二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。一般是按照二叉树结点从上至下、从左到右的顺序存储。 依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系。 对于一般的二叉树,如果仍按从上至下和从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能... 阅读全文
摘要:一、二叉树的定义 二叉树(Binary Tree)是n(n≥0)个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。 二叉树的5中形态 二、二叉树的相关术语 (1)结点的度。结点所拥有的子树的个数称为该结点的度。 (2)叶结点... 阅读全文
摘要:一、稀疏矩阵的定义 对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。 人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。 二、稀疏矩阵的压缩存储 由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩... 阅读全文
摘要:一、特殊矩阵的定义 对那些具有相同值元素或零元素在矩阵中分布具有一定规律的矩阵,被称之为特殊矩阵。特殊矩阵通常有: 对角矩阵(d i a g o n a l):M是一个对角矩阵当且仅当i≠j 时有M(i, j) = 0。下图a 所示。 三对角矩阵( t r i d i a g o n a l):M是一个三对角矩阵当且仅当| i - j | 1 时有M(i, j ) = 0。下... 阅读全文
摘要:一、概述 数组的定义: 数组是由n(n≧1)个相同类型的数据元素组成的有限序列,数组中的每一个数据通常为数据元素 。 数组中的元素可以通过下标随机访问,其中下标的个数由组数的维数决定。 数组可以看作是线性表的推广,一维数组为按顺序存储的线性表,二维数组为数据元素类型为一维数组的线性表,三维数组为数据元素类型为二维数组的线性表,依此类推。 数组的特点: 数组中的数据元素数目确定。... 阅读全文
摘要:"^\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\d+$" //整数 …… 阅读全文
摘要:尽管String类和StringBuilder类提供了一套方法用来处理基于字符串的数据,但是RegEx和它的支持类却为字符串处理任务提供了更强大的功能。字符串的处理主要包括寻找字符串中的模式(模式匹配),以及通过称为正则表达式的特殊语言来执行操作。本问主要介绍正则表达式的方法以及如果利用它们解决普通文本处理任务。 一、正则表达式概述 简单的说,正则表达式是一种可以用于文字模式匹配和替换的强... 阅读全文
摘要:Stringbuilder中有两个非常重要的字段m_currentThread和m_StringValue。前者保存的是Stringbuilder对象拥有者的线程id,用于判断多线程情况下操作Stringbuilder对象是否需要创造副本;后者是以个String类型的对象,用于保存Stringbuilder的实际数据对象,这就说明Stringbuilder是以System.String对象来保存和操作的。 阅读全文
摘要:一、SubString方法的实现 二、Split方法的实现 三、Join方法的实现 四、Compare方法的实现 五、Trim方法的实现 阅读全文
摘要:String类继承了IComparable、ICloneable、IConvertible、IEnumerable接口,以便调用者枚举、拷贝、转换容器中的字符。同时还继承了IComparable, IEnumerable, IEquatable,这表示源代码的编写者考虑到了对泛型的支持。如果使用C# 2.0以上标准的编译器编译代码,那么String类还需要继承这三个泛型接口。 String类是.NET Framework中最为重要的类型之一。 不可变对象,提供了多种字符串操作函数。 为StringBuilder类提供基础方法。 为了保证执行效率,String类的性能关键部分采用非托管C++代码编写: - 数据寻址:例如:get_Chars等; - 内存分配:例如:FastAllocateString等; - 内存复制,移动。 阅读全文