C# 从键盘填充树并在控制台中输出

C# 从键盘填充树并在控制台中输出,c#,binary-tree,C#,Binary Tree,我需要用键盘获取节点的值,并以有序的方式显示一棵树。 我尝试将节点值保留在数组中,然后在整个循环中为每个节点的数组元素赋值。 接下来,将树输出到控制台 手动创建树时,一切正常。 通过数组赋值不起作用 class Tree { class Node { public Node left; public Node right; pub

我需要用键盘获取节点的值,并以有序的方式显示一棵树。 我尝试将节点值保留在数组中,然后在整个循环中为每个节点的数组元素赋值。 接下来,将树输出到控制台

手动创建树时,一切正常。 通过数组赋值不起作用

    class Tree
        {
            class Node
            {
                public Node left;
                public Node right;
                public int value;
                public Node(Node left, Node right, int value)
                {
                    this.left = left;
                    this.right = right;
                    this.value = value;
                }
            }

            private Node _root;
            public Tree()
            {
                _root = null;
            }

            public void Add(int value)
            {
                _add(ref _root, value);
            }

            private void _add(ref Node node, int value)
            {
                if (node == null)
                {
                    node = new Node(null, null, value);
                }
                else
                {
                    if (node.value >= value)
                    {
                        _add(ref node.left, value);
                    }
                    else
                    {
                        _add(ref node.right, value);
                    }
                }
            }

            public void Print()
            {
                _print(_root);
            }

            private void _print(Node node)
            {
                if (node == null) return;
                _print(node.left);
                Console.WriteLine(node.value);
                _print(node.right);
            }

        }

}
在程序中使用:

static void Main(string[] args)
    {
        Tree t = new Tree();


        int n = 6;
        int[] strs = new int[n];
        for (int i = 0; i < n; i++)
        {
            strs[i] = Console.Read();
        }
        for (int i = 0; i < n; i++)
        {
            t.Add(strs[i]);
        }
        t.Print();
我找到了答案。 只需将字符串转换为int:

static void Main(string[] args)
    {
        Tree t = new Tree();

        int n = 6;
        int[] strs = new int[n];
        for (int i = 0; i < n; i++)
        {
            strs[i] = Convert.ToInt32(Console.ReadLine());
        }
        for (int i = 0; i < n; i++)
        {
            t.Add(strs[i]);
       }

        t.Print();

    }

您应该注意从控制台添加到阵列中的内容。
static void Main(string[] args)
    {
        Tree t = new Tree();

        int n = 6;
        int[] strs = new int[n];
        for (int i = 0; i < n; i++)
        {
            strs[i] = Convert.ToInt32(Console.ReadLine());
        }
        for (int i = 0; i < n; i++)
        {
            t.Add(strs[i]);
       }

        t.Print();

    }