熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

數據結構與算法(C#)系列-二叉樹

2013-11-13 10:10:28  來源: .NET編程 

  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

  }

  }


From:http://tw.wingwit.com/Article/program/net/201311/12790.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.