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

本文关键字:控制台 输出 键盘 填充 | 更新日期: 2023-09-27 18:35:15

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

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

    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();

没有循环它可以工作:

static void Main(string[] args)
    {
        Tree t = new Tree();
            t.Add(1);
            t.Add(2);
            t.Add(6);
            t.Add(17);
            t.Add(21);
            t.Add(3);
            t.Add(8);
        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();
    }