Пример #1
0
 protected void insert_data(binary_node <int> node, binary_search_node insert, binary_node <int> base_node)
 {
     if (node == null)
     {
         if (base_node.data > insert.data)
         {
             base_node.left = insert; return;
         }
         else
         {
             base_node.right = insert; return;
         }
     }
     else
     {
         if (node.data > insert.data)
         {
             insert_data(node.left, insert, node);
         }
         else if (node.data < insert.data)
         {
             insert_data(node.right, insert, node);
         }
     }
     return;
 }
Пример #2
0
    public override void insert(int data)
    {
        binary_search_node temp = new binary_search_node(data);

        insert_data(root, temp, null);
        Splaying(temp);
    }
Пример #3
0
    public override void insert(int data)
    {
        binary_search_node temp = new binary_search_node(data);

        temp.Colors = binary_node <int> .Colour.red;
        insert_data(root, temp, null);
        check_conditions(temp);
    }
Пример #4
0
    void post_order_to_tree_convert(int[] postorder)
    {
        root = new binary_tree <int> .binary_node <int>(postorder[0]);

        foreach (int i in postorder)
        {
            if (i == postorder[0])
            {
                continue;
            }
            binary_search_node temp = new binary_search_node(i);
            insert_data(root, temp, null);
        }
    }
Пример #5
0
    void top_down_splay(int data)
    {
        binary_node <int>         temp      = new binary_search_node(data);
        List <binary_node <int> > path_node = path(temp);

        Splaying(path_node[path_node.Count - 1]);
        if (root.left == null)
        {
            root = root.right;
            return;
        }
        temp = root.right;
        root = root.left;
        Splaying(max_value(root));
        root.right = temp;
    }
Пример #6
0
    void bottom_up_splay(int data)
    {
        binary_search_node temp             = new binary_search_node(data);
        int temp_data                       = root.data;
        List <binary_node <int> > path_node = path(temp);

        base.remove(data);
        if (temp.data == temp_data)
        {
            return;
        }
        if (temp.data == path_node[path_node.Count - 1].data)
        {
            Splaying(path_node[path_node.Count - 2]);
        }
        else
        {
            Splaying(path_node[path_node.Count - 1]);
        }
    }
Пример #7
0
    public virtual void insert(int data)
    {
        binary_search_node temp = new binary_search_node(data);

        insert_data(root, temp, null);
    }
Пример #8
0
 public binary_search_tree(int root_data)
 {
     root = new binary_search_node(root_data);
 }