117.info
人生若只如初见

c#二叉树的插入和删除操作

在C#中实现二叉树的插入和删除操作可以通过定义一个二叉树节点类和一个二叉树类来实现。下面是一个简单的示例代码:

using System;

public class Node
{
    public int data;
    public Node left;
    public Node right;

    public Node(int data)
    {
        this.data = https://www.yisu.com/ask/data;"hljs">public BinaryTree()
    {
        root = null;
    }

    public void Insert(int data)
    {
        root = InsertRec(root, data);
    }

    private Node InsertRec(Node root, int data)
    {
        if (root == null)
        {
            root = new Node(data);
            return root;
        }

        if (data < root.data)
        {
            root.left = InsertRec(root.left, data);
        }
        else if (data > root.data)
        {
            root.right = InsertRec(root.right, data);
        }

        return root;
    }

    public void Delete(int data)
    {
        root = DeleteRec(root, data);
    }

    private Node DeleteRec(Node root, int data)
    {
        if (root == null)
        {
            return root;
        }

        if (data < root.data)
        {
            root.left = DeleteRec(root.left, data);
        }
        else if (data > root.data)
        {
            root.right = DeleteRec(root.right, data);
        }
        else
        {
            if (root.left == null)
            {
                return root.right;
            }
            else if (root.right == null)
            {
                return root.left;
            }

            root.data = https://www.yisu.com/ask/MinValue(root.right);"hljs">private int MinValue(Node root)
    {
        int minv = root.data;

        while (root.left != null)
        {
            minv = root.left.data;
            root = root.left;
        }

        return minv;
    }
}

public class MainClass
{
    public static void Main()
    {
        BinaryTree tree = new BinaryTree();
        tree.Insert(50);
        tree.Insert(30);
        tree.Insert(20);
        tree.Insert(40);
        tree.Insert(70);
        tree.Insert(60);
        tree.Insert(80);

        Console.WriteLine("Inorder traversal of the given tree");
        tree.Inorder();

        Console.WriteLine("\nDelete 20");
        tree.Delete(20);
        Console.WriteLine("Inorder traversal of the modified tree");
        tree.Inorder();

        Console.WriteLine("\nDelete 30");
        tree.Delete(30);
        Console.WriteLine("Inorder traversal of the modified tree");
        tree.Inorder();

        Console.WriteLine("\nDelete 50");
        tree.Delete(50);
        Console.WriteLine("Inorder traversal of the modified tree");
        tree.Inorder();
    }
}

在上面的示例代码中,我们定义了一个Node类和一个BinaryTree类来实现二叉树的插入和删除操作。Insert方法用于插入节点,Delete方法用于删除节点。我们还实现了一个MinValue方法来找到指定节点下的最小值节点。在Main方法中,我们演示了如何使用这些方法来操作二叉树。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe39bAzsIAAFTB1U.html

推荐文章

  • C#使用EnumWindows的最佳实践

    EnumWindows函数是用于枚举所有顶层窗口的Windows API函数。在C#中,可以通过P/Invoke来调用EnumWindows函数。以下是EnumWindows函数的最佳实践示例:
    usin...

  • C# EnumWindows能提升开发效率吗

    EnumWindows 是一个 Windows API 函数,用于枚举所有顶层窗口。通过 EnumWindows 函数,开发人员可以获取当前系统中所有的顶层窗口,并对其进行操作,比如查找特...

  • C# EnumWindows是如何工作的

    在C#中,EnumWindows方法是Windows API中的一种功能,它用于枚举所有顶层窗口或指定窗口的子窗口。通过调用EnumWindows方法,可以获取当前系统中所有窗口的句柄,...

  • C# TabControl如何自定义样式

    要自定义C# TabControl的样式,可以通过使用自定义绘制来实现。以下是一种常见的方法: 创建一个继承自TabControl的自定义TabControl控件类,例如CustomTabContr...

  • c#二叉树的搜索效率如何

    C#中二叉树的搜索效率取决于二叉树的平衡性。如果二叉树是平衡的,即左右子树的高度差不超过1,那么搜索的时间复杂度为O(log n),其中n为二叉树中节点的数量。这...

  • c#二叉树能否表示数学表达式

    是的,C#中的二叉树可以用来表示数学表达式。二叉树的节点可以存储操作符或操作数,并且可以通过遍历二叉树来获取表达式的值。例如,可以使用二叉树表示以下数学...

  • c#二叉树在数据结构中的地位

    在数据结构中,二叉树是一种重要的数据结构,它是一种树形结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树在数据结构中的地位非常重要...

  • c#二叉树能否实现自平衡

    C#中的二叉树可以实现自平衡,具体的实现方式是通过AVL树或红黑树这两种自平衡二叉搜索树的数据结构来实现。AVL树和红黑树都是经过特殊设计的二叉搜索树,能够在...