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