Rumah > pembangunan bahagian belakang > Tutorial C#.Net > Bagaimana untuk menulis algoritma pepohon carian binari menggunakan C#

Bagaimana untuk menulis algoritma pepohon carian binari menggunakan C#

王林
Lepaskan: 2023-09-19 13:03:28
asal
1274 orang telah melayarinya

Bagaimana untuk menulis algoritma pepohon carian binari menggunakan C#

Cara menggunakan C# untuk menulis algoritma pepohon carian binari, contoh kod khusus diperlukan

Pokok Carian Perduaan (BST) ialah struktur data yang biasa digunakan, yang mempunyai ciri operasi penyisipan, carian dan pemadaman pantas. Dalam C#, kita boleh menggunakan pendekatan berorientasikan objek untuk menulis algoritma pepohon carian binari.

Pertama, kita perlu menentukan kelas nod pokok carian binari, yang mengandungi nilai dan dua penunjuk ke nod anak kiri dan kanan. Kod tersebut kelihatan seperti ini:

public class BSTNode
{
    public int Value { get; set; }
    public BSTNode Left { get; set; }
    public BSTNode Right { get; set; }

    public BSTNode(int value)
    {
        Value = value;
        Left = null;
        Right = null;
    }
}
Salin selepas log masuk

Seterusnya, kita boleh menentukan kelas pepohon carian binari, yang mengandungi kaedah untuk operasi seperti sisipan, carian dan pemadaman. Kodnya adalah seperti berikut:

public class BinarySearchTree
{
    private BSTNode root;

    public BinarySearchTree()
    {
        root = null;
    }

    public void Insert(int value)
    {
        root = InsertNode(root, value);
    }

    private BSTNode InsertNode(BSTNode node, int value)
    {
        if (node == null)
        {
            node = new BSTNode(value);
        }
        else if (value < node.Value)
        {
            node.Left = InsertNode(node.Left, value);
        }
        else if (value > node.Value)
        {
            node.Right = InsertNode(node.Right, value);
        }
        return node;
    }

    public bool Search(int value)
    {
        return SearchNode(root, value);
    }

    private bool SearchNode(BSTNode node, int value)
    {
        if (node == null)
        {
            return false;
        }
        else if (value < node.Value)
        {
            return SearchNode(node.Left, value);
        }
        else if (value > node.Value)
        {
            return SearchNode(node.Right, value);
        }
        else
        {
            return true;
        }
    }

    public void Delete(int value)
    {
        root = DeleteNode(root, value);
    }

    private BSTNode DeleteNode(BSTNode node, int value)
    {
        if (node == null)
        {
            return node;
        }
        else if (value < node.Value)
        {
            node.Left = DeleteNode(node.Left, value);
        }
        else if (value > node.Value)
        {
            node.Right = DeleteNode(node.Right, value);
        }
        else
        {
            if (node.Left == null && node.Right == null)
            {
                node = null;
            }
            else if (node.Left == null)
            {
                node = node.Right;
            }
            else if (node.Right == null)
            {
                node = node.Left;
            }
            else
            {
                BSTNode minNode = FindMinNode(node.Right);
                node.Value = minNode.Value;
                node.Right = DeleteNode(node.Right, minNode.Value);
            }
        }
        return node;
    }

    private BSTNode FindMinNode(BSTNode node)
    {
        while (node.Left != null)
        {
            node = node.Left;
        }
        return node;
    }
}
Salin selepas log masuk

Di atas ialah contoh kod terperinci menggunakan C# untuk menulis algoritma pepohon carian binari. Dengan mencipta kelas BSTNode dan kelas BinarySearchTree, kami boleh melakukan operasi seperti sisipan, carian dan pemadaman dengan mudah. Kerumitan masa bagi operasi ini ialah O(h), dengan h ialah ketinggian pepohon carian binari.

Kod sampel adalah seperti berikut:

BinarySearchTree bst = new BinarySearchTree();
bst.Insert(5);
bst.Insert(3);
bst.Insert(8);
bst.Insert(2);
bst.Insert(4);
bst.Insert(7);
bst.Insert(9);

Console.WriteLine(bst.Search(4)); // 输出:True
Console.WriteLine(bst.Search(6)); // 输出:False

bst.Delete(8);
Console.WriteLine(bst.Search(8)); // 输出:False
Salin selepas log masuk

Melalui kod di atas, kita dapat melihat bahawa operasi sisipan, carian dan pemadaman pepohon carian binari adalah sangat mudah dan cekap, dan sesuai untuk banyak senario aplikasi praktikal. Saya harap contoh kod dalam artikel ini dapat membantu anda memahami dan menggunakan C# untuk menulis algoritma pepohon carian binari.

Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma pepohon carian binari menggunakan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan