usingSystem;usingSystem.Collections;
namespaceDataStructure
{
/**////<summary>
///BinaryTree的摘要说明。
///</summary>
publicclassBinaryTree:NaryTree
{
//构造二叉空树
publicBinaryTree():base(2)
{
//
//TODO:在此处添加构造函数逻辑
//
}
publicBinaryTree(object_obj):base(2,_obj)
{
}
//------------------------------------------------------------------
protectedoverrideobjectGetEmptyInstance(uint_degree)
{
returnnewBinaryTree(_degree);
}
//------------------------------------------------------------------
//重写深度遍历
publicoverridevoidDepthFirstTraversal(IPrePostVisitor_vis)
{
if(!IsEmpty())
{
_vis.PreVisit(this.Key);
this[0].DepthFirstTraversal(_vis);
_vis.Visit(this.Key);
this[1].DepthFirstTraversal(_vis);
_vis.PostVisit(this.Key);
}
}
//二叉树大小的比较
//先比较关键字,如果相等,再比较左子树,如果再相等,则比较右子树----如此递归
IComparable成员#regionIComparable成员
publicoverrideintCompareTo(objectobj)
{
//TODO:添加BinaryTree.CompareTo实现
//因为Comare()中已经进行了类型断定,故不会出现转型错误
BinaryTreetmpTree=(BinaryTree)obj;
if(this.IsEmpty())
returntmpTree.IsEmpty()?0:-1;
if(tmpTree.IsEmpty())
return1;
intresult=Comparer.Default.Compare(this,tmpTree);
if(result==0)
result=this[0].CompareTo(tmpTree[0]);
if(result==0)
result=this[1].CompareTo(tmpTree[1]);
returnresult;
}
#endregion
}
}
正文
C#实现二叉树2006-06-07 14:09:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/Csharpsky/15529.html
阅读(2352) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论