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

评论