本文仅代表作者个人观点,正确与否请读者自行研究!
原文地址:http://www.csdn.net/Develop/article/24/24299.shtm
using System; using System.Collections;
namespace DataStructure { /// <summary> /// BinaryTree 的摘要说明。 /// </summary> public class BinaryTree:NaryTree { //构造二叉空树 public BinaryTree():base(2) { // // TODO: 在此处添加构造函数逻辑 // } public BinaryTree(object _obj):base(2,_obj) { }
//------------------------------------------------------ protected override object GetEmptyInstance(uint _degree) { return new BinaryTree(_degree); } //------------------------------------------------------ //重写深度遍历 public override void DepthFirstTraversal(IPrePostVisitor _vis) { if ( !IsEmpty() ) { _vis.PreVisit(this.Key); this[0].DepthFirstTraversal(_vis); _vis.Visit(this.Key); this[1].DepthFirstTraversal(_vis); _vis.PostVisit(this.Key); } }
//二叉树大小的比较 //先比较关键字,如果相等,再比较左子树,如果再相等,则比较右子树----如此递归 #region IComparable 成员
public override int CompareTo(object obj) { // TODO: 添加 BinaryTree.CompareTo 实现 //因为Comare()中已经进行了类型断定,故不会出现转型错误 BinaryTree tmpTree=(BinaryTree)obj; if( this.IsEmpty() ) return tmpTree.IsEmpty()?0:-1; if( tmpTree.IsEmpty() ) return 1; int result=Comparer.Default.Compare(this,tmpTree); if(result==0) result=this[0].CompareTo(tmpTree[0]); if(result==0) result=this[1].CompareTo(tmpTree[1]); return result; }
#endregion } }
出处:CSDN
责任编辑:cjj
上一页 下一页 数据结构与算法(C#实现)---二叉堆(数组实现)
◎进入论坛网络编程版块参加讨论
|