二叉排序树的C#实现
寒假回家的时候,看了一下C#语言描述版的数据结构。我只是单纯的想,更加熟悉计算机语言,我希望能像是用母语一样使用计算机语言和计算机交流。很奇怪之前学C语言版本的数据结构,那些算法我都不是非常理解,但在读这本书的时候,却有种豁然开朗的感觉。是书写的好还是我能力有所提高亦或是两者皆有?
进入正题。
二叉排序树说起来其实并不是很难。二叉查找树是一种把值比较小的节点存储在左子节点内而值比较大的节点存储在右子节点里的树。其基本操作有以下几种:
插入
我们对这个二叉树插入节点。如果二叉树本身没有任何节点,那么插入的这个节点就成为根节点;否则,根据定义,你应该遍历树,找出某一个节点,如果带插入节点的值大于这个节点,则成为带插入节点的右节点,否则就是左节点。从这里看来,根节点本身就是一个树的节点。因此,我首先实现了一个TreeNode类型,如下:
1: public class TreeNode<T>:IComparable,IComparable<TreeNode<T>> {2:3: #region .ctor 串联构造函数4:5: public TreeNode():this(default(T),null,null,0){6: }7:8: public TreeNode(T value):this(value,null,null,1) {9: }10:11: public TreeNode(T value,TreeNode<T> leftNode,TreeNode<T> rightNode):this(value,leftNode,rightNode,1) {12: }13:14: public TreeNode(T value, TreeNode<T> leftNode, TreeNode<T> rightNode, int deepness) {15: Value = value;16: LeftNode = leftNode;17: RightNode = rightNode;18: Deepness = deepness;19: IsLeaf = true;20: }21:22: public override string ToString() {23: return Value.ToString();24: }25:26: #endregion27:28: #region Inte易做图ce Members29:30: int IComparable.CompareTo(Object item) {31: TreeNode<T> node = item as TreeNode<T>;32: if (node == null)33: throw new ArgumentException("Argument for comparing is not a object of TreeNode Type !!");34: else {35: if (this == item)36: return 0;37: else {38: Comparer comparer = new Comparer(CultureInfo.CurrentCulture);39: return comparer.Compare(this.Value, node.Value);40: }41: }42: }补充:软件开发 , C# ,
上一个:C#异常类相关总结
下一个:C#实现小写金额转大写金额