从键盘填充树并在控制台中输出
本文关键字:控制台 输出 键盘 填充 | 更新日期: 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();
}