0
我需要通過鍵盤獲取節點的值並按順序顯示樹。 我嘗試將節點值保留在數組中,然後將值分配給數組元素中的每個節點。 接下來,將樹輸出到控制檯。從鍵盤填充樹並在控制檯中輸出
當手動創建樹時,一切正常。 通過數組賦值不起作用。
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();
}
你應該在你從控制檯添加到陣列什麼注意。 – yesenin