コード例 #1
0
        private Bnode Add(int data, Bnode node)
        {
            if (node == null)
            {
                Bnode newnode = new Bnode(data);

                return(newnode);
            }
            else
            {
                if (data > node.data)
                {
                    node.right = Add(data, node.right);
                    return(node);
                }
                else if (data < node.data)
                {
                    node.left = Add(data, node.left);
                    return(node);
                }
                else
                {
                    return(node);
                }
            }
        }
コード例 #2
0
 private Bnode GetMinimum(Bnode node)
 {
     while (node.left != null)
     {
         node = node.left;
     }
     return(node);
 }
コード例 #3
0
 private void postorder(Bnode node)
 {
     if (node != null)
     {
         postorder(node.left);
         postorder(node.right);
         Console.WriteLine(node.data);
     }
 }
コード例 #4
0
 private Bnode Delete(int data, Bnode node)
 {
     if (node != null)
     {
         if (data == node.data)
         {
             if (node.left == null && node.right == null)
             {
                 return(null);
             }
             else if (node.left == null && node.right != null)
             {
                 node = node.right;
                 return(node);
             }
             else if (node.right == null && node.left != null)
             {
                 node = node.left;
                 return(node);
             }
             else
             {
                 Bnode temp = Successor(node);
                 node.data  = temp.data;
                 node.right = Delete(temp.data, node.right);
                 return(node);
             }
         }
         else if (data > node.data)
         {
             node.right = Delete(data, node.right);
             return(node);
         }
         else
         {
             node.left = Delete(data, node.left);
             return(node);
         }
     }
     else
     {
         return(null);
     }
 }
コード例 #5
0
 private Bnode Successor(Bnode node)
 {
     return(GetMinimum(node.right));
 }
コード例 #6
0
 public void Add(int data)
 {
     root = Add(data, root);
 }