91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c#二叉樹的插入和刪除操作

c#
小樊
86
2024-07-26 02:38:14
欄目: 編程語言

在C#中實現二叉樹的插入和刪除操作可以通過定義一個二叉樹節點類和一個二叉樹類來實現。下面是一個簡單的示例代碼:

using System;

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

    public Node(int data)
    {
        this.data = data;
        left = null;
        right = null;
    }
}

public class BinaryTree
{
    private Node root;

    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 = MinValue(root.right);

            root.right = DeleteRec(root.right, root.data);
        }

        return root;
    }

    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方法中,我們演示了如何使用這些方法來操作二叉樹。

0
陆河县| 赫章县| 林州市| 海城市| 忻州市| 右玉县| 内丘县| 滦平县| 平遥县| 石阡县| 南昌县| 延边| 青川县| 皋兰县| 崇州市| 三门峡市| 黄陵县| 辽阳县| 屯门区| 玉环县| 福鼎市| 永宁县| 高唐县| 连平县| 揭阳市| 延寿县| 梓潼县| 文安县| 遂川县| 鹤山市| 泰顺县| 南和县| 呼图壁县| 乡城县| 崇州市| 永川市| 建德市| 阿拉善右旗| 洛宁县| 建昌县| 吴旗县|