示例#1
0
        //=====================================
        //          関数
        //-------------------------------------
        /// <summary>
        /// 新しい要素を木に追加します
        /// </summary>
        /// <param name="val">追加したい要素</param>
        public virtual void Add(System.IComparable val)
        {
            int cc = val.CompareTo(this.v);

            if (cc < 0)
            {
                if (this.lL == 0)
                {
                    this.lL++;
                    this.l = new binTreeNode(val, this, true);
                }
                else
                {
                    l.Add(val);
                }
            }
            else
            {
                if (this.rL == 0)
                {
                    this.rL++;
                    this.r = new binTreeNode(val, this, false);
                }
                else
                {
                    this.r.Add(val);
                }
            }
        }
示例#2
0
 /// <summary>
 /// このノードを木から削除します。このノードの下にある子孫は、木に残します。
 /// </summary>
 public virtual void Remove()
 {
     if (lL + rL == 0)        //子孫がない時
     {
         this.p.Decreased(1, w);
         if (this.w)
         {
             this.p.l = null;
         }
         else
         {
             this.p.r = null;                                       //自ら削除
         }
     }
     else if (lL > rL)           //左側の子孫の方が多い時
     {
         v = l.lastNode.v;
         l.lastNode.Remove();
     }
     else              //右側の子孫の方が多い時
     {
         v = r.firstNode.v;
         r.lastNode.Remove();
     }
 }
示例#3
0
        // w,p を使用するロジックは、binTree で override されなければなりません。

        //constructor
        /// <summary>
        /// mwg.Collection.binTreeNode のコンストラクタ
        /// </summary>
        /// <param name="val">保持する情報を設定します</param>
        /// <param name="parent">親となる binTreeNode を設定します</param>
        /// <param name="which">自分が左側の子かどうかを設定します。</param>
        public binTreeNode(System.IComparable val, binTreeNode parent, bool which)
        {
            v  = val;
            p  = parent;
            w  = which;
            l  = r = null;
            lL = rL = 0;
        }