using System;
using SystemCollections;
namespace DataStructure
{
/// <summary>
/// BinaryTree 的摘要说明
/// </summary>
public class BinaryTree:NaryTree
{
//构造二叉空树
public BinaryTree():base()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public BinaryTree(object _obj):base(_obj)
{}
//
protected override object GetEmptyInstance(uint _degree)
{ return new BinaryTree(_degree); }
//
//重写深度遍历
public override void DepthFirstTraversal(IPrePostVisitor _vis)
{
if ( !IsEmpty() )
{
_visPreVisit(thisKey);
this[]DepthFirstTraversal(_vis);
_visVisit(thisKey);
this[]DepthFirstTraversal(_vis);
_visPostVisit(thisKey);
}
}
//二叉树大小的比较
//先比较关键字如果相等再比较左子树如果再相等则比较右子树如此递归
#region IComparable 成员
public override int CompareTo(object obj)
{
// TODO: 添加 BinaryTreeCompareTo 实现
//因为Comare()中已经进行了类型断定故不会出现转型错误
BinaryTree tmpTree=(BinaryTree)obj;
if( thisIsEmpty() )
return tmpTreeIsEmpty()?:;
if( tmpTreeIsEmpty() )
return ;
int result=ComparerDefaultCompare(thistmpTree);
if(result==)
result=this[]CompareTo(tmpTree[]);
if(result==)
result=this[]CompareTo(tmpTree[]);
return result;
}
#endregion
}
}