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

来源:qqread论坛 作者: 2006-08-13 出处:pcdog.com

  • 数据结构与算法
  • xml
  • using System;

    using System.Collections;

     

    namespace DataStructure

    {

         /// <summary>

         /// BinaryTree 的摘要说明。

         /// </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

         }

    }


    更多内容请看PCdog.com--数据结构数据结构与算法数据结构相关文章专题
    上一篇:C#中势将窗体拖拽进行到底
    下一篇:C# 程序员参考--结构教程