Exemple #1
0
 // "обёртка" для функции Add
 public void Add(double value, string word)
 {
     if (top == null)
     {
         top = new Node(value, word, null, null, null);
         return;
     }
     Add(top, value, word);
 }
Exemple #2
0
 // рекурсивная функция добавления элемента со значением val
 private void Add(Node p, double val, string word)
 {
     if (p.key < val)
     {
         if (p.right == null)
             p.right = new Node(val, word, null, null, p);
         else
             Add(p.right, val, word);
     }
     else
     {
         if (p.left == null)
             p.left = new Node(val, word, null, null, p);
         else
             Add(p.left, val, word);
     }
 }
Exemple #3
0
 // конструктор
 public Node(double key, string data, Node left, Node right, Node parent)
 {
     this.key = key;
     this.data = data;
     this.left = left;
     this.right = right;
     this.parent = parent;
 }
Exemple #4
0
 // рекурсивная функция поиска элемента по значению (возвращает true/false)
 private bool SearchBool(ref Node t, double k)
 {
     if ((top == null) || (k != t.key)) return false;
     if ((t == null) || (k == t.key))
         return true;
     else
         if (k < t.key)
             return SearchBool(ref t.left, k);
         else return SearchBool(ref t.right, k);
 }
Exemple #5
0
 // рекурсивная функция поиска элемента по значению (возвращает элемент)
 private Node Search(ref Node t, double k)
 {
     if ((t == null) || (k == t.key))
         return t;
     else
         if (k < t.key)
             return Search(ref t.left, k);
         else return Search(ref t.right, k);
 }
Exemple #6
0
 private void Del0(int data, ref Node p)
 {
     if (p != null)
         if (data < p.key)
             Del0(data, ref p.left);
         else
             if (data > p.key)
                 Del0(data, ref p.right);
             else
             {
                 q = p;
                 if (q.right == null)
                     p = q.left;
                 else
                     if (q.left == null)
                         p = q.right;
                     else
                         Del(ref q.left);
             }
 }
Exemple #7
0
 private void Del(ref Node r)
 {
     if (r.right != null)
         Del(ref r.right);
     else
     {
         q.key = r.key;
         q = r;
         r = r.left;
     }
 }