正文

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

阅读(2444) | 评论(0)


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

评论

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