数据结构与算法 (C# 实现 ) 系列 --- 二叉树
using System;
using System.Collections;
namespace DataStructure
{
///
1<summary>
2
3/// BinaryTree 的摘要说明。
4
5/// </summary>
public class BinaryTree:NaryTree
{
//构造二叉空树
public BinaryTree(): base (2)
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public BinaryTree( object _obj): base (2,_obj)
{}
//------------------------------------------------------------------
protected override object GetEmptyInstance( uint _degree)
{ return new BinaryTree(_degree); }
//------------------------------------------------------------------
//重写深度遍历
public override void DepthFirstTraversal(IPrePostVisitor _vis)
{
if ( !IsEmpty() )
{
_vis.PreVisit( this .Key);
this [0].DepthFirstTraversal(_vis);
_vis.Visit( this .Key);
this [1].DepthFirstTraversal(_vis);
_vis.PostVisit( this .Key);
}
}
//二叉树大小的比较
//先比较关键字,如果相等,再比较左子树,如果再相等,则比较右子树----如此递归
#region IComparable 成员
public override int CompareTo( object obj)
{
// TODO: 添加 BinaryTree.CompareTo 实现
//因为Comare()中已经进行了类型断定,故不会出现转型错误
BinaryTree tmpTree=(BinaryTree)obj;
if ( this .IsEmpty() )
return tmpTree.IsEmpty()?0:-1;
if ( tmpTree.IsEmpty() )
return 1;
int result=Comparer.Default.Compare( this ,tmpTree);
if (result==0)
result= this [0].CompareTo(tmpTree[0]);
if (result==0)
result= this [1].CompareTo(tmpTree[1]);
return result;
}
#endregion
}
}