Fork me on GitHub

数据结构---树与二叉树(2)

二、二叉树

1.定义:二叉树是n(n>=0)个节点组成的有限集合。n=0时称为空二叉树;n>0的二叉树由一个根节点和两棵互不相
           交的、分别称为左子树和右子树的二叉树构成。
2.二叉树的形式定义:二叉树(Binary Tree)简记为 BT,是一个二元组,
                         BT = (D, R)
                         其中:D是结点的有限集合;
                                  R是结点之间关系的有限集合。

3.由二叉树的定义可知,二叉树与树的主要区别在于:二叉树的每个节点有其左、右之分,而且二叉树的节点最多只有两棵子树,所以二叉树的高度最多为2。

4.二叉树的性质:
1)、若根节点的层次为1,则二叉树第i层的节点数目最多为2的(i-1)次方(i>=1)。
2)、在深度为k的二叉树中,至多有2的k次方-1个节点。
3)、二叉树中,若叶子节点的数为n0,2度节点数位n2,则有n0=n2+1.

5.二叉树的基本操作:创建一棵二叉树、撤销二叉树、遍历二叉树、查找、插入节点、删除子树。

6.二叉树的遍历:先根次序、中根次序、后根次序。

 

微软提供了很多种树的结构,DOM是树结构的一个例子,其中有很多类用来操作访问DOM:

XmlNode 
用于创建对象,这个对象可以保持 XML 文档的一个结点
XmlDocument 
用于保持一个完整的 XML 文档对象。允许文档导航和编辑
XmlDocumentFragment 
用于保持一个 XML 片段。可以将这个 XML 片段插入到文档中,或用作其它方面
XmlElement 
用于在 XML 文档中操作元素类型的结点集合
XmlNodeList 
代表 XML 文档中一个有序的结点集合
XmlNamedNodeMap 
用于通过索引或索引值访问一个结点集合
XmlAttribute
用于在 XML 文档中操作属性类型结点
XmlCDataSection 
用于操作 CDATA 部分
XmlText 
用于保持一个元素或属性的文本内容
XmlComment 
用于操作注释
XmlDocumentType 
用于保持与文档类型声明相关的信息
XmlEntity 
用于保持一个实体
XmlEntityReference 
用于保持一个实体引用
XmlNotation 
用于保持在一个文档类型声明(DTD)中声明的注释
XmlProcessingInstruction 
用于保持一个处理指令

我自己想了解下二叉树的写法,然后正好书上有很多练习题,就动手写了BinaryTree类。因为中根遍历的非递归要用到栈、层次遍历的非递归算法要用到队列,所以改了一下自己的myStack类和myQueue类。
TreeNode.cs

Code


BinaryTree.cs

Code

因为所有的算法都在这个类里面,所以比较乱。下次再复习的时候,我就将他们分离出来。
myStack.cs

Code

 myQueue.cs

Code

 

虽然看完了,但是还有很多是不了解的东西,有待下次复习时熟悉。

 

posted @ 2009-04-15 11:49  idoku  阅读(376)  评论(0编辑  收藏  举报