数据结构与算法(C#实现)系列---二叉树(转)

using System;

using System.Collections;

namespace DataStructure

{

///

/// BinaryTree 的摘要说明。

///

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

}

}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8781179/viewspace-924557/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8781179/viewspace-924557/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值