ITPub博客

首页 > 应用开发 > IT综合 > 数据结构与算法(C#实现)系列---二叉树(转)

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

原创 IT综合 作者:BugRobber 时间:2007-07-06 15:42:53 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/8781179/viewspace-924557/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    372
  • 访问量
    200911