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

溫馨提示×

c#二叉樹如何實現動態數據集合

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

在C#中,可以通過定義一個二叉樹類來實現動態數據集合。以下是一個簡單的C#二叉樹實現示例:

using System;

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

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

public class BinaryTree
{
    public Node root;

    public BinaryTree()
    {
        this.root = null;
    }

    public void Insert(int value)
    {
        Node newNode = new Node(value);

        if (this.root == null)
        {
            this.root = newNode;
        }
        else
        {
            InsertRecursively(this.root, newNode);
        }
    }

    private void InsertRecursively(Node currentNode, Node newNode)
    {
        if (newNode.value < currentNode.value)
        {
            if (currentNode.left == null)
            {
                currentNode.left = newNode;
            }
            else
            {
                InsertRecursively(currentNode.left, newNode);
            }
        }
        else
        {
            if (currentNode.right == null)
            {
                currentNode.right = newNode;
            }
            else
            {
                InsertRecursively(currentNode.right, newNode);
            }
        }
    }

    public void TraverseInOrder(Node node)
    {
        if (node != null)
        {
            TraverseInOrder(node.left);
            Console.Write(node.value + " ");
            TraverseInOrder(node.right);
        }
    }

    public void TraversePreOrder(Node node)
    {
        if (node != null)
        {
            Console.Write(node.value + " ");
            TraversePreOrder(node.left);
            TraversePreOrder(node.right);
        }
    }

    public void TraversePostOrder(Node node)
    {
        if (node != null)
        {
            TraversePostOrder(node.left);
            TraversePostOrder(node.right);
            Console.Write(node.value + " ");
        }
    }

    public static void Main()
    {
        BinaryTree binaryTree = new BinaryTree();

        binaryTree.Insert(10);
        binaryTree.Insert(5);
        binaryTree.Insert(15);
        binaryTree.Insert(7);
        binaryTree.Insert(12);

        Console.WriteLine("In-order traversal:");
        binaryTree.TraverseInOrder(binaryTree.root);

        Console.WriteLine("\nPre-order traversal:");
        binaryTree.TraversePreOrder(binaryTree.root);

        Console.WriteLine("\nPost-order traversal:");
        binaryTree.TraversePostOrder(binaryTree.root);
    }
}

在以上示例中,定義了一個Node類來表示二叉樹的節點,以及一個BinaryTree類來實現二叉樹的操作。可以使用Insert方法來插入新節點,以及使用TraverseInOrderTraversePreOrderTraversePostOrder方法來遍歷二叉樹。可以根據需要擴展該實現,以滿足特定的需求。

0
古交市| 台东市| 兴化市| 建平县| 通海县| 黄大仙区| 温泉县| 黔东| 万盛区| 潍坊市| 汶上县| 平和县| 综艺| 大荔县| 铅山县| 鸡东县| 抚宁县| 淮阳县| 子洲县| 金门县| 儋州市| 册亨县| 西城区| 余姚市| 新兴县| 资中县| 安达市| 广灵县| 靖江市| 建宁县| 吉水县| 东海县| 尖扎县| 玉林市| 电白县| 宜城市| 含山县| 高台县| 鹤山市| 五寨县| 都江堰市|