明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

数据结构与算法(C#完成)---二叉树

[摘要]using System;using System.Collections;namespace DataStructure /// <summary> /// BinaryTree 的摘要说明。 /// </summary> public class...

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