正文

C#实现二叉树2006-06-07 14:09:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/15529.html

分享到:

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);
}

}



//二叉树大小的比较
//先比较关键字,如果相等,再比较左子树,如果再相等,则比较右子树----如此递归
#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

}

}

阅读(2352) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册