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#

王林
王林asal
2023-09-19 13:03:281288semak imbas

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;
    }
}

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;
    }
}

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

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!

Kenyataan:
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